Python 通过Django中的URL传递静态字符串参数(模型选择)?
Django 2.0 我有以下型号:Python 通过Django中的URL传递静态字符串参数(模型选择)?,python,django,django-urls,django-testing,django-tests,Python,Django,Django Urls,Django Testing,Django Tests,Django 2.0 我有以下型号: class Visitor(models.Model): TYPE_CHOICES = ( ('P', 'Person'), ('E', 'Employee'), ) type = models.CharField(choices=TYPE_CHOICES, max_length=1) first_name = models.CharField(max_length=40) last_n
class Visitor(models.Model):
TYPE_CHOICES = (
('P', 'Person'),
('E', 'Employee'),
)
type = models.CharField(choices=TYPE_CHOICES, max_length=1)
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=40)
birth_date = models.DateField()
street_address = models.CharField(max_length=100)
city = models.CharField(max_length=40)
在我的URL中,我有以下URL:
# ex: /my_app/P/visit_information/
path('<str:visitor_type>/visit_information/', views.visit_information, name='visit_information'),
但我得到了以下错误:
visit_information() got an unexpected keyword argument 'visitor_type'
处理对其执行反向查找的最佳方法是什么?我如何为它提供一个'P'或'E',使它返回200代码
我是否在测试中处理URL不正确
编辑以添加:
如果我尝试kwargs
而不是args
我会看到以下错误:
visit\u information()得到一个意外的关键字参数“visitor\u type”
编辑以添加视图:
首先,
{'visitor\u type':'p'}
是一个字典,所以您应该使用kwargs
,而不是args
:
response = client.get(reverse('visit_information', kwargs={'visitor_type':'P'}))
或者,您可以在列表中使用args
:
response = client.get(reverse('visit_information', args=['P']}))
一旦你修复了这个问题,你就会得到类型错误
,因为你的访问信息
视图的签名中缺少访问者类型
。应该是:
def visit_information(request, visitor_type):
return render(request, 'my_app/visit_information.html', {})
你是否尝试过传递
kwargs
而不是args
?是的,我尝试过kwargs和args-两者都给出了相同的答案。你能显示访问信息()视图吗?我编辑了添加视图-这是一个非常非常简单的视图,因为我刚刚启动了这个应用程序。只是一些HTML写着“显示视图”谢谢你的解释-我很感激!对我来说真是一个“无聊”的时刻。再次感谢!
response = client.get(reverse('visit_information', args=['P']}))
def visit_information(request, visitor_type):
return render(request, 'my_app/visit_information.html', {})