2015-10-05 105 views
3

有問題試圖從提交後重定向到另外編輯多個字段 與創建超鏈接提交。Django的唯一URL重定向問題

當用重定向提交我的表單時,我得到下面的錯誤。 如果我將呈現請求的表單提交給另一個頁面,表單保存成功。

請求方法:POST請求 網址:http://127.0.0.1:8000/resourcelib/add_pricebook Django的 版本:1.8.4異常類型:NoReverseMatch異常值: 反向的 'detail_pricebook' 與參數 '()' 和關鍵字 參數 '{' 的p_id」 :22L}'找不到。 0圖案(多個)嘗試:[]

我Model.py

class PriceBook(models.Model): 
    pricebook_id = models.AutoField(primary_key=True) 
    pricebook_name = models.CharField(max_length=255,verbose_name='PriceBook Name') 
    discription = models.TextField(verbose_name='Discription') 
    date_created = models.DateTimeField(auto_now_add=True, blank=True) 
    active = models.SmallIntegerField(max_length=1, blank=True) 

    def __unicode__(self): 
     return self.pricebook_name 

view.py

def new_pricebook(request): 
    if request.method == "POST": 
     pricebook_form = PricebookForm(request.POST) 
     if pricebook_form.is_valid(): 
       post = pricebook_form.save(commit=False) 
       post.save() 
       #return render(request, 'resourcelib/thanks.html',) 
       return redirect('detail_pricebook', p_id=post.pricebook_id) 

    else: 
     pricebook_form = PricebookForm() 
     return render(request, 'resourcelib/pricebook_add.html', {'pricebook_form': pricebook_form}) 

def detail_pricebook(request, p_id): 
    pricebook_from = get_object_or_404(PriceBook, pk=p_id) 
    return render(request, 'resourcelib/pricebook_detail.html', {'pricebook_from':pricebook_from}) 

url.py

url(r'^add_pricebook', views.new_pricebook, name='new_pricebook'), 
    url(r'^list_pricebook', views.list_pricebook, name='list_pricebook'), 
    url(r'^detail_pricebook/(?P<p_id>[0-9]+)/$', views.detail_pricebook, name='detail_pricebook'), 

我不相信它在url文件中,因爲如果我瀏覽到條目,例如,我不會遇到任何錯誤。 127.0.0.1:8000/resourcelib/detail_pricebook/3/ - 正常工作

但是,我無法讓我的鏈接工作,我可以列出我的條目好。但是,當您點擊剛剛出現的鏈接時,鏈接將無法從下面的代碼運行127.0.0.1:8000/resourcelib/%7B%%20url%20'detail_pricebook'%20p_id.pk%7D

{% if pricebooks %} 
    <ul> 
    {% for pricebook in pricebooks %} 
     <li><h1><a href="{% url 'detail_pricebook' p_id.pk}">{{ pricebook.pricebook_name }}</a></h1></li> 
    {% endfor %} 
    </ul> 
{% else %} 
    <p>No price books have been created.</p> 
{% endif %} 
{% endblock %} 

任何幫助,將不勝感激

+0

有''%缺失。在模板中用'pricebook'替換'p_id':'{%url'detail_pricebook'pricebook.pk%}' – ozgur

回答

0

%在url標籤丟失。要更小心。

+0

謝謝,當我嘗試解決方案時,肯定錯過了。將它重新添加,但不可用錯誤:例外值:\t 未找到參數'(2L,)'和關鍵字參數'{}'的'detail_pricebook'的反向。 0模式嘗試:[] – flightoftherobots

+0

試試這個:{%url'detail_pricebook'p_id = pricebook.pk%} – hsfzxjy

+0

感謝@hsfzxjy整理出來,沒有意識到如何鏈接到我的觀點,當它在不同的命名空間下 – flightoftherobots

0

感謝@ozgur,有想法,我有pk的錯誤參考。我能夠解決這個問題。我曾在一次項目urls.py的名稱命名空間......大概信息,我應該有給予,忘了我用18.11這一個

url(r'^resourcelib/', include('oneworksite.resourcelib.urls', namespace='resource')), 

,所以我當時能夠得到的鏈接與

工作
<a href="{% url 'resource:detail_pricebook' pricebook.pk %}">{{ pricebook.pricebook_name }}</a> 

然後在我的重定向我改 return redirect('resource:detail_pricebook', p_id=post.pk)