Python 通过Django中的URL传递静态字符串参数(模型选择)?

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

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_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', {})