2017-02-19 33 views
0

在我的模板,我有以下:的Django無法重定向時,鏈接被點擊

{% block content %} 
    {% for category in categories %} 
     {% url 'post' category as url %} 
     <a href="{{ url }}"> 
      <div class="card"> 
       <img src="" alt="Avatar"> 
       <div class="container"> 
        <h4><b>{{ category }}</b></h4> 
       </div> 
      </div> 
     </a> 
    {% endfor %} 
{% endblock %} 

頁面呈現的很好,當我運行本地開發服務器,但是當我點擊任何鏈接,沒有任何反應。

這裏是我的urls.py文件:

urlpatterns = [ 
    url(r'^all/', views.all_jobs, name="all"), 
    url(r'^post/', views.pick_category, name="post_category"), 
    url(r'^post/(?P<category>[a-zA-Z]+)/$', views.post_job, name="post"), 
    url(r'^job/(?P<job_pk>\d+)/$', views.get_job, name="get_job"), 
] 

這是爲什麼不工作?

在此先感謝。

UPDATE:

我已經改變了視圖代碼以下,現在正確的URL顯示,但仍然認爲功能是不是叫:

<a href="{% url 'jobs:post' category %}"> 

我的看法是這樣的:

def post_job(request, category): 
    form = find_type_of_form() 
    if request.method == 'POST': 
     form = find_type_of_form(category, request.POST) 
     if form.is_valid(): 
      job = form.save() 
      messages.add_message(request, messages.SUCCESS, "Job successfully posted!") 
      return HttpResponseRedirect(job.get_absolute_url()) 

    return render(request, 'jobs/post_job_form.html', {'form': form}) 

def find_type_of_form(category, request_type=None): 
    if category == categories[0]: 
     return forms.BabysittingForm(request_type) 
    elif category == categories[1]: 
     return forms.TutoringForm(request_type) 
    elif category == categories[2]: 
     return forms.PetsittingForm(request_type) 
    elif category == categories[3]: 
     return forms.ShoppingForm(request_type) 
+1

您是否檢查過呈現的HTML中的內容?你能通過嗎? –

回答

1

您還沒有終止了您的pick_category URL模式,所以它匹配一切開始「後/」。 。請確保您使用尾隨美元符號:

url(r'^post/$', views.pick_category, name="post_category"), 
+0

謝謝兄弟你救了我頭痛! –

0

我覺得你在這個代碼{% url 'post' category as url %}有問題,我建議你改一下;

{% for category in categories %} 
    {% url 'post' category=category.slug %} {# an example using slug field #} 
    <a href="{{ url }}"> 
     <div class="card"> 
      <img src="" alt="Avatar"> 
      <div class="container"> 
       <h4><b>{{ category }}</b></h4> 
      </div> 
     </div> 
    </a> 
{% endfor %} 

作爲一個說明,不要使用對象的URL。