我有一個名爲blog的項目,url模式如下所示。我想讓應用程序「帖子」路由所有的流量。如何設計Django的url模式以避免301
他們的URL模式如下所示:
#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/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'),
]
當進入主頁,在posts.views家用功能將產生與本地數據的一些鏈接來呈現的index.html。
def home(request):
final = get_local_suggest()
return render(request, "index.html", final)
一些index.html中模板的代碼如下喜歡:
<a href="p/{{ results.code }}?From=homepage" class="portfolio-link" target="_blank">
所以在主頁上,有些鏈接將顯示有:「http://example.com/p/code?From=homepage
但這裏的棘手的問題是, :當我點擊url時,Django的控制檯會打印301,如下所示:在瀏覽器中,它將從「/ p/code」重定向到「/ p/code?From = homepage」
未找到:/ P /碼[17 /月/ 2017年15時05分23秒] 「GET /P /代碼從主頁= HTTP/1.1?」 301 0
有一定是壞用url模式設計,如何避免它再次發生?
謝謝!
感謝您的回覆。在這種情況下,「slug」似乎不起作用。在模板渲染過程中出錯 在模板/home/ubuntu/workspace/templates/index.html中,第50行有錯誤 帶有參數''的'slug'反轉'(u'BI3nsz4BBnV',)'和關鍵字參數'{}'找到。 0模式嘗試:[] –
@TonyWang對,我錯過了命名空間。試試''帖子:slug''來代替。 – knbk
非常感謝,它的工作原理! –