2012-11-04 40 views
0

我想從表單中獲取發佈數據並顯示它們。 我用「{%url uasite1.views.sell_detail sell_detail.pk%}」來根據他們的PK提取數據。NoReverseMatch(與PK有關):django

但是,只是[NoReverseMatch···,'uasite1.views.sell_detail'的參數'('',)'和關鍵字參數'{}'沒有找到。「]顯示出來。 我的代碼有什麼問題?

models.py

from django.db import models 
from django.forms import ModelForm 

class Sell(models.Model): 
    subject = models.CharField(max_length=100) 
    price = models.CharField(max_length=100) 
    condition = models.CharField(max_length=100) 
    email = models.EmailField() 
    body = models.CharField(max_length=200) 

forms.py

from django.forms import ModelForm 
from uasite1.models import Sell 

class SellForm(ModelForm): 
    class Meta: 
     model = Sell 

views.py

from django.shortcuts import render_to_response,get_object_or_404 
from django.http import HttpResponseRedirect 
from uasite1.forms import SellForm 
from uasite1.models import Sell 
from django.template import RequestContext 


def sell_detail(request, pk): 
    sell = get_object_or_404(Sell, pk=int(pk)) 
    return render_to_response('sell_display.html',{'sell':sell}) 

def sell_create(request): 
    context = {} 
    if request.method == 'POST': 
     form = SellForm(request.POST) 
     if form.is_valid(): 
      new_sell = form.save() 
      return HttpResponseRedirect('/sechand/%d/' % new_sell.pk) 
    else: 
     form = SellForm() 
    context['form'] = form 
    return render_to_response('sell.html',context,context_instance = RequestContext(request)) 

def Electronics(request): 
    latest_sell_list = Sell.objects.all()[:5] 
    return render_to_response('electronics.html',{'latest_sell_list':latest_sell_list}) 

urls.py

from django.conf.urls import patterns, include, url 
from django.contrib import admin 
admin.autodiscover() 

urlpatterns = patterns('', 
    url(r'^sechand/$','uasite1.views.sell_create'), 
    url(r'^sechand/(\d+)/$', 'uasite1.views.sell_detail'), 
    url(r'^electronics/$', 'uasite1.views.Electronics'), 
    url(r'^admin/', include(admin.site.urls)), 
) 

electronics.html

{% extends 'base.html' %} 
{% block extrahead %} 
    <p><strong>Electronics</strong></p> 

{% endblock %} 

{% block content %} 

    <p><a href="{% url uasite1.views.sell_detail sell_detail.pk %}">{{ sell.subject }}</a></p> 

{% endblock %} 

回答

0

有幾個失誤。

1:您的網址

url(r'^sechand/(\d+)/$', 'uasite1.views.sell_detail'), 

更改爲

url(r'^sechand/(P<pk>\d+)/$', 'uasite1.views.sell_detail'), 

這使得URL接受其傳遞給查看通過pk參數。

2:您的Electronics()視圖建議您將列表傳遞給模板,以便您需要更新模板以迭代該列表並適當地呈現列表中的每個項目。並確保適當地使用變量名稱。

{% block content %} 

    {%for sell in latest_sell_list %} 
     <p><a href="{% url uasite1.views.sell_detail sell.pk %}">{{ sell.subject }}</a></p> 

    {%endfor%} 
{% endblock %} 
+0

謝謝,但結果仍顯示「NoReverseMatch錯誤」 [反向'uasite1.views.sell_detail'與參數'( 1,)'和關鍵字參數'{}'未找到。 ]雖然【arguments'('',)'】被改爲【arguments'(1,)'】。另外,在向我的urls.py添加「P 」之後,「sell_display」頁面開始不起作用(http:// localhost:8000/sechand/1 /中的頁面未找到(404))可能是其他問題用我的代碼? – stack5914

+0

在我的代碼中添加「?P 」之後,它成功運行!非常感謝。 – stack5914

2

變化
<a href="{% url uasite1.views.sell_detail sell_detail.pk %}">

到:
<a href="{% url uasite1.views.sell_detail sell.pk %}">

+0

謝謝,但它仍然無法正常工作。顯示屏顯示[Reverse for for'uasite1.views.sell_detail',參數'('',)'和關鍵字參數'{}'未找到。]和[

{{ sell.subject }}

]在「模板渲染過程中的錯誤」中突出顯示, ,[返回render_to_response('electronics.html',{'latest_sell_list':latest_sell_list})]在「Traceback」中高亮顯示。 – stack5914

+0

嘗試使用sell.id – thikonom

+0

它stil不起作用並顯示相同的錯誤消息... – stack5914