无法在django应用程序中映射URL

时间:2015-01-19 12:09:25

标签: django

我正在尝试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']

我是否以错误的方式映射了网址?如果是,那么正确的方法是什么?

1 个答案:

答案 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)