私はブログと呼ばれるプロジェクトを持って、URLのパターンは以下のとおりです。私はすべてのトラフィックをルーティングするために、アプリの「投稿」を作りたいと思っています。それらの避けるためにDjangoのURLパターンを設計する方法
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/4月/ 2017年夜03時05分23秒] "? /P /コードを取得=ホームページのHTTP/1.1から" 301 0
ありますが何か間違っている必要がありURLパターンのデザインで、それが再び起こったのを避ける方法は?
ありがとうございます!
ご返信ありがとうございます。この場合、「slug」は動作しないようです。テンプレートレンダリング中にエラーが発生しました テンプレート/home/ubuntu/workspace/templates/index.html、行50でエラーが発生しました 引数 '(u'BI3nsz4BBnV'、)およびキーワード引数 '{}'を使用して 'slug'見つかりました。 0個のパターンが試されました:[] –
@TonyWangそうですね、私は名前空間が欠けていました。代わりに '' posts:slug''を試してみてください。 – knbk
偉大なおかげで、それは動作します! –