1

私は Django を初めて使用し、Django URL ディスパッチャに問題があります。

「prometfire」プロジェクトと「ホームページ」アプリがあります。

私の目標は、このパスをビュー関数に接続することです。

127.0.0.1:8000 --> 「ホームページビュー」

127.0.0.1:8000/ようこそ --> 「ようこそビュー」

「homepage_view」は問題なく動作しますが、127.0.0.1:8000/welcome に移動すると、「welcome_view」の代わりに「homepage_view」と同じ結果になります。

何か不足していますか?

ジャンゴ 1.5 パイソン 2.7

#urls.py in prometfire

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^$', include('homepage.urls')),
    url(r'^welcome/', include('homepage.urls')),
    url(r'^admin/', include(admin.site.urls)),
)



#urls.py in homepage app

from django.conf.urls import patterns, include, url

urlpatterns = patterns('homepage.views',
    url(r'^$', 'homepage_view'),
    url(r'^welcome/', 'welcome_view'),
)



#views.py in homepage app

from django.shortcuts import render_to_response
from django.http import HttpResponse

def homepage_view(request):
    return render_to_response('homepage.html',
                             {'name': 'bob'}
    )

def welcome_view(request):
    return HttpResponse('Welcome')
4

2 に答える 2

2

問題は、ホームページの URL を 2 回含めていることです。2 番目のエントリを削除します

url(r'^welcome/', include('homepage.urls')),

これは、他の url conf のインクルードに関するドキュメントで説明されています。

Django が include() (django.conf.urls.include()) に遭遇するたびに、その時点までに一致した URL の部分を切り捨て、残りの文字列を追加の処理のために含まれている URLconf に送信します。

あなたの場合、'welcome/'は URL から削除され''、ホームページの URL パターンと一致する が残ります。

于 2013-06-16T13:24:51.833 に答える
0

これは、アプリの 2 番目の条件に入ることはなく、 urlroot conf, welcome/で条件を確認した後、アプリに直接移動^$するためです。welcome/解決策は、 url から を削除することrootです。最初のウェルカム定義は冗長であり、「バグ」を引き起こしています。

于 2013-06-16T13:26:29.697 に答える