Python Django如何根据选项字段验证请求的URL?

Python Django如何根据选项字段验证请求的URL?,python,django,django-views,Python,Django,Django Views,在我正在编写的应用程序中,我的一个模型中有一个选择字段。为了论证起见,它看起来像: MANUFACTURERS = ( ('sk','skoda') ('vw','volkswagen') ) class car(models.Model): manufacturer = models.CharField(max_length='2', choices=MANUFACTURERS) 现在,我想创建一个视图来列出一个制造商的所有汽车,我将视图连接起来,以将制造商参数作为U

在我正在编写的应用程序中,我的一个模型中有一个选择字段。为了论证起见,它看起来像:

MANUFACTURERS = (
    ('sk','skoda')
    ('vw','volkswagen')
)
class car(models.Model):
    manufacturer = models.CharField(max_length='2', choices=MANUFACTURERS)
现在,我想创建一个视图来列出一个制造商的所有汽车,我将视图连接起来,以将制造商参数作为URL的一部分,但问题是,根据“sk”或“vw”,这确实是一个公认的制造商缩写

最初,我经历了一个输入MANUFACTURERS常量的复杂过程,创建了一个缩写列表,并检查该列表中是否存在给定的值。然后迭代MANUFACTURERS常量以获得全名

for manufacturer in MANUFACTURERS:
    manufacturers.append(manufacturer[0])

if url_given_mfn in manufacturers:
    continue
else:
    raise Http404

等等。这很不雅观-有更好的解决方案吗?

我要做的是从可能的制造商那里做一个dict,例如:

from mymodel import MANUFACTURERS
mdict = dict(MANUFACTURERS)


def myview(request, manufacturer):
    if not (manufacturer in mdict):
        raise Http404

    #--> do what you need to do
通过这种方式,您可以查看键(缩写),如果要检索值,只需执行以下操作:

mdict[manufacturer]

您也可以在模型中执行dict,如果愿意,只需导入即可。

我建议您使用Django表单

from django.forms.widgets import RadioSelect
from model import MANUFACTURERS
class manufacturerTypeForm(forms.Form):
    manufacturer = forms.ChoiceField(required = True, label= 'License Type', widget=RadioSelect(), choices=MANUFACTURERS)

因此,在视图中,您只需验证表单。如果“验证为真”,只需将其另存为“显示错误消息”。

不幸的是,这不是我问的问题,我想验证URL参数,以对照表单选项字段的现有元组对其进行检查。见公认的答案。