Django 服务获取请求
Django serve get-requests
大家好,我是 Django 的新手。我想要实现的是一个 URL ,我可以通过我的应用程序的 GET 请求访问它,并传递一些值。
我在 Django 中有一个 UserProfile
模型,它与 User
具有 oneToOneField 关系。我想用我的 GET 请求传递电子邮件,并用这封电子邮件找到一个用户实例,然后我想再传递两个值,我想将它们与这个用户 UserProfile
属性进行比较。
但我没有非常了解如何实现这一目标。这是我拥有的:
在我的 views.py
def check(request):
try:
email = request.GET.get('email', '')
osusername = request.GET.get('osusername', '')
computername = request.GET.get('computername','')
except TypeError:
return HttpResponseBadRequest()
user = get_object_or_404(User.objects.filter(user__email=email)[0])
在我的 urls.py
urlpatterns = patterns('',
url(r'^check/$', 'myapp.views.check'),)
但是我如何比较例如计算机名与该用户的 User.UserProfile.computername?不管怎么写都是错的
我的 UserProfile 模型按照要求 @comments:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
computername = models.CharField("Computername", max_length=150, blank=False)
osusername = models.CharField("Osusername", max_length=150, blank=False)
所以您 get_object_or_404
的语法是错误的。您不向它传递对象:它为您获取对象。所以:
user = get_object_or_404(User, email=email)
现在你已经有了一个 User 实例,你想获得相关的配置文件,所以你可以这样做:
profile = user.userprofile
或者,如果您不需要其他任何实际用户实例,直接获取配置文件可能更容易:
profile = get_object_or_404(UserProfile, user__email=email)
现在可以查看相关属性:
osusername == profile.osusername
computername == profile.computername
您需要先通过以下方式检索用户实例:
try:
a_user = User.objects.get(email=email)
except User.DoesNotExist:
# error handling if the user does not exist
然后,通过以下方式获取对应的UserProfile对象:
profile = a_user.userprofile
然后,您可以从 UserProfile 对象中获取 osusername 和 computername:
profile.osusername
profile.computername
作为 .
的补充
如果在多个视图上检查相关属性是一项常见任务,那么也值得在您的 UserProfile 模型中创建一个方法来执行所需的验证检查。
class UserProfile(object):
# various attributes ...
def check_machine_attributes(self, os_username, computer_name):
if os_username == self.osusername and computername == self.computername:
return True
return False
在你看来你可以这样做:
if profile.check_machine_attributes(osusername, computername):
# ...
else:
# ...
大家好,我是 Django 的新手。我想要实现的是一个 URL ,我可以通过我的应用程序的 GET 请求访问它,并传递一些值。
我在 Django 中有一个 UserProfile
模型,它与 User
具有 oneToOneField 关系。我想用我的 GET 请求传递电子邮件,并用这封电子邮件找到一个用户实例,然后我想再传递两个值,我想将它们与这个用户 UserProfile
属性进行比较。
但我没有非常了解如何实现这一目标。这是我拥有的:
在我的 views.py
def check(request):
try:
email = request.GET.get('email', '')
osusername = request.GET.get('osusername', '')
computername = request.GET.get('computername','')
except TypeError:
return HttpResponseBadRequest()
user = get_object_or_404(User.objects.filter(user__email=email)[0])
在我的 urls.py
urlpatterns = patterns('',
url(r'^check/$', 'myapp.views.check'),)
但是我如何比较例如计算机名与该用户的 User.UserProfile.computername?不管怎么写都是错的
我的 UserProfile 模型按照要求 @comments:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
computername = models.CharField("Computername", max_length=150, blank=False)
osusername = models.CharField("Osusername", max_length=150, blank=False)
所以您 get_object_or_404
的语法是错误的。您不向它传递对象:它为您获取对象。所以:
user = get_object_or_404(User, email=email)
现在你已经有了一个 User 实例,你想获得相关的配置文件,所以你可以这样做:
profile = user.userprofile
或者,如果您不需要其他任何实际用户实例,直接获取配置文件可能更容易:
profile = get_object_or_404(UserProfile, user__email=email)
现在可以查看相关属性:
osusername == profile.osusername
computername == profile.computername
您需要先通过以下方式检索用户实例:
try:
a_user = User.objects.get(email=email)
except User.DoesNotExist:
# error handling if the user does not exist
然后,通过以下方式获取对应的UserProfile对象:
profile = a_user.userprofile
然后,您可以从 UserProfile 对象中获取 osusername 和 computername:
profile.osusername
profile.computername
作为
如果在多个视图上检查相关属性是一项常见任务,那么也值得在您的 UserProfile 模型中创建一个方法来执行所需的验证检查。
class UserProfile(object):
# various attributes ...
def check_machine_attributes(self, os_username, computer_name):
if os_username == self.osusername and computername == self.computername:
return True
return False
在你看来你可以这样做:
if profile.check_machine_attributes(osusername, computername):
# ...
else:
# ...