单击链接时,Django无法重定向

时间:2017-02-19 15:39:52

标签: python django url django-templates

在我的模板中,我有以下内容:

{% 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"),
]

为什么这不起作用?

提前致谢。

更新

我已将视图代码更改为以下内容,现在显示正确的网址,但仍未调用视图功能:

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

2 个答案:

答案 0 :(得分:1)

您尚未终止您的pick_category网址格式,因此它会匹配开头的所有内容&#34;发布/&#34;。 。确保使用尾随的美元符号:

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

答案 1 :(得分:0)

我认为您在此代码acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, 中存在问题,我建议您更改此代码;

{% url 'post' category as url %}
  

作为备注,请勿使用对象作为网址。