我有一个名为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模式设计一定有问题,如何避免再次发生?
谢谢!
答案 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',''),并清理您的网址格式。