如何设计Django url模式以避免301

时间:2017-04-17 15:29:49

标签: django redirect url-pattern

我有一个名为blog的项目,url模式如下所示。我想制作应用程序"帖子"路由所有流量。

它们的网址模式如下所示:

rowCount
#blog/urls.py
from django.conf.urls import include, url
from django.conf.urls.static import static
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^', include('posts.url', namespace='posts')),
]

if settings.DEBUG:
    urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

当进入主页时,posts.views中的home函数将生成一些带有本地数据的链接以呈现index.html。

#posts/url.py
from django.conf.urls import url
from django.contrib import admin

from .views import (
        home,
        down,
        get_data_by_post,
        )

urlpatterns = [
        url(r'^$', home, name='down'),
        url(r'^api/$', ins_down, name='api'),
        url(r'^p/(?P<slug>[-\w]+)/$', get_data_by_post, name='slug'),
        ]

index.html模板中的一些代码如下所示:

def home(request):
    final = get_local_suggest()
    return render(request, "index.html", final)

因此,在主页中,会显示一些链接:&#34; http://example.com/p/code?From=homepage

但这里棘手的问题是:当我点击网址时,Django的控制台会打印301,如下所示。在浏览器中,它将从&#34; / p / code&#34;重定向。 to&#34; / p / code?From = homepage&#34;。

  

未找到:/ p / code [17 / Apr / 2017 15:05:23]&#34; GET   / p / code?来自=主页HTTP / 1.1&#34; 301 0

url模式设计一定有问题,如何避免再次发生?

谢谢!

2 个答案:

答案 0 :(得分:1)

您的网址格式以斜线结尾,因此您的网址也应如此。

要确保始终将您的网址指向规范网址并避免重定向,请使用{% url %}模板代码:

<a href="{% url 'posts:slug' results.code %}?From=homepage" class="portfolio-link" target="_blank">

此处'slug'是您网址的名称,results.code是网址的参数。

答案 1 :(得分:0)

您可以在视图中使用request.GET.get('From',''),并清理您的网址格式。

相关问题