私はDjangoを使い始めたばかりで、まだ学んでいることの1つはurl_patternsです。ルートパス(http://www.mysite.com)とaboutページなどの静的ページを処理するようにページアプリを設定しました。ルートパスのURLパターンを設定する方法を理解しましたが、サイトにパス「/ about」をページの「about」ビューに転送させることができません。
ここに私の主なurls.pyがあります
_ from Django.conf.urls import patterns, include, url
from Django.conf import settings
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls')),
url(r'^$', 'pages.views.root'),
url(r'^/', include('pages.urls')),
)
_
ここに私のページurls.pyがあります
_ from Django.conf.urls import patterns, include, url
urlpatterns = patterns('pages.views',
url(r'^about', 'about'),
)
_
これが私のページviews.pyです
_ # Create your views here.
from Django.shortcuts import render_to_response
from Django.template import RequestContext
from Django.http import HttpResponse, HttpResponseRedirect
from Django.core.urlresolvers import reverse
def root(request):
return render_to_response('pages/root.html',context_instance=RequestContext(request))
def about(request):
return render_to_response('pages/about.html',context_instance=RequestContext(request))
_
メインのurls.pyファイルをr'^a/', include('pages.urls')
に変更すると、パス '/ a/about'はaboutアクションに移動します。そのため、私が書いている方法に問題があると思いますこのファイルのURLパターン。しかし、それを変更する方法がわかりません。誰か助けてもらえますか?
問題が何であるかを理解しました。プロジェクトレベルでの適切なurl_patternは次のとおりです。
urlpatterns = patterns('',
url(r'^polls/', include('polls.urls')),
url(r'^$', 'pages.views.root'),
url(r'', include('pages.urls')),
)
これが設定されている場合、「/ about」およびその他の単純なパスが適切に指示します。
みんな、ありがとう!
プロジェクトレベルのurl.pyでこれを試してください。
urlpatterns = patterns('',
# Examples:
url(r'^$', 'apps_name.views.home', name='home'),
# Uncomment the admin/doc line below to enable admin documentation:
# url(r'^admin/doc/', include('Django.contrib.admindocs.urls')),
# Uncomment the next line to enable the admin:
url(r'^admin/', include(admin.site.urls)),
(r'^about/', include('about.urls')),
)
そしてアプリのurl.pyについて
urlpatterns = patterns('',
url(r'^$', direct_to_template, {"template": "about/about.html"}, name="about"),
)
正規表現が上から下に評価されることを考慮に入れ、パスが正規表現に適合する場合は、その正規表現が入力されます。正規表現の詳細についてはgoogle itを参照するか、Zed Shawのすばらしい本 regexps を試してください。
Djangoバージョン2.0以降、URLパターンがDjango.urls.path()
を使用するように変更されました。ここで例を確認してください。 link
from Django.urls import path
from . import views
urlpatterns = [
# ex: /polls/
path('', views.index, name='index'),
# ex: /polls/5/
path('<int:question_id>/', views.detail, name='detail'),
# ex: /polls/5/results/
path('<int:question_id>/results/', views.results, name='results'),
# ex: /polls/5/vote/
path('<int:question_id>/vote/', views.vote, name='vote'),
]