我正在尝试django。我有一个Django项目,我有一个属性应用程序。我添加了一个名为Attributes
的模型类class Attributes(models.Model):
attr1 = models.CharField(max_length=200)
attr2 = models.CharField(max_length=200)
attr3 = models.CharField(max_length=200)
。在那里,我有一个名为index的视图,它列出了属性记录。我使用的模板打印列表并指向对应于该记录属性的视图。
def index(request):
list = Attributes.objects.all()
context = {'list' : list}
return render(request, 'attributes/index.html', context)
def listattr(request, val):
obj = Attributes.objects.filter(attr1=val).get()
context = {'idp_object' : idp_obj}
return render(request, 'attributes/properties.html', context)
urls.py
urlpatterns = patterns('', url(r'^$', views.index, name='index'),
url(r'^(?P<val>\d+)/$', views.listattr, name='listattr'))
当我导航到127.0.0.1/attributes时,我得到了列表,但是当我点击任何链接时,我收到一个错误:
Using the URLconf defined in testapplication.urls, Django tried these URL patterns, in this order:
^admin/
attributes/ ^$ [name='index']
attributes/ ^(?P<val>\d+)/$ [name='listattr']
我是否以错误的方式映射了网址?如果是,那么正确的方法是什么?
答案 0 :(得分:0)
您应该Attribute
而不是id
获取个人attr1
个实例:
def listattr(request, val):
obj = Attributes.objects.filter(id=val).get()
context = {'idp_object' : idp_obj}
return render(request, 'attributes/properties.html', context)
顺便说一下,最好在视图的第一行使用get_object_or_404
快捷方式:
from django.shortcuts import get_object_or_404
def listattr(request, val):
obj = get_object_or_404(Attributes, id=val)
context = {'idp_object' : obj}
return render(request, 'attributes/properties.html', context)