21

私はdjangoを初めて使用しますが、まだ学んでいることの1つはurl_patternsです。ルートパス(http://www.mysite.com)と、aboutページなどの静的ページを処理するようにpagesアプリを設定しました。ルートパスの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パターンを書き込む方法に問題があると思います。しかし、私はそれを変更する方法を理解することはできません。誰か助けてもらえますか?

4

4 に答える 4

34

問題が何であるかを理解しました。プロジェクトレベルでの適切なurl_patternは次のとおりです。

 urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls')),
    url(r'^$', 'pages.views.root'),
    url(r'', include('pages.urls')),
 )

これが適切に行われると、「/about」およびその他の単純なパスが適切に指示されます。

みんな、ありがとう!

于 2012-10-16T16:03:48.763 に答える
7

プロジェクトレベルの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"),
)

正規表現が上から下に評価されることを考慮に入れてください。パスがregexpに適合する場合は、正規表現が入力されます。正規表現の詳細については、グーグルで検索するか、ZedShawの正規表現に関するすばらしい本を試してください。

于 2012-10-16T15:51:55.037 に答える
4

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'),
]
于 2017-12-08T12:52:53.710 に答える
0

方法についてurl

url(r'^$', 'pages.views.root')

urlDjango 3.1では非推奨ですが、re_path代わりに使用することをお勧めします。

https://docs.djangoproject.com/en/3.1/ref/urls/#s-url

https://docs.djangoproject.com/en/3.1/ref/urls/#re-path

注:r'^$'パターンはpath関数では機能せず、ルートが見つからなかったという誤解を招くエラーが発生します。

re_path(r'^$', [etc])パターン内の単純な文字列の代わりに、正規表現を使用するたびに使用する必要があります。

于 2021-03-17T23:15:39.687 に答える