gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:32:17 25 4
gpt4 key购买 nike

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'),

我正在尝试为此编写一些测试,但遇到了问题。

我希望我的测试能够告诉我它是否返回状态 200:

def test_parent_visit_information_returns_200(self):
"""
visit_information page returns a 200
"""
client = Client()
response = client.get(reverse('visit_information', args={'visitor_type':'P'}))
self.assertEqual(response.status_code, 200)

但我收到以下错误:

visit_information() got an unexpected keyword argument 'visitor_type'

处理反向查找的最佳方法是什么?我如何向它提供“P”或“E”,以便它返回 200 代码?

我在测试中处理 URL 的方式是否不当?

编辑添加:

如果我尝试使用 kwargs 而不是 args,我会看到此错误:

visit_information() 收到意外的关键字参数“visitor_type”

编辑以添加 View :

def visit_information(request):
return render(request, 'my_app/visit_information.html', {

})

最佳答案

首先,{'visitor_type':'P'}是一个字典,所以你应该使用kwargs,而不是args:

response = client.get(reverse('visit_information', kwargs={'visitor_type':'P'}))

或者,您可以将 args 与列表一起使用:

response = client.get(reverse('visit_information', args=['P']}))

修复此问题后,您将收到 TypeError,因为您的 visit_information View 在其签名中缺少 visitor_type。应该是:

def visit_information(request, visitor_type):
return render(request, 'my_app/visit_information.html', {})

关于python - 在 Django 中通过 URL 传递静态字符串参数(模型选择)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49861004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com