Djangoのサイトのチュートリアルに従って、簡単な投票アプリを作成しています。ただし、mySite/urls.pyで正規表現を定義しているにもかかわらず、Djangoは "//127.0.0.1:8000/polls"を解決できません。これをvirtualenv、最新のDjango(1.7)がインストールされています。
mySite/urls.py:
from Django.conf.urls import patterns, include, url
from Django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)
mySite/polls/urls.py:
from Django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('',
url(r'^$', views.index, name='index'),
)
mySite/polls/views.py:
from Django.shortcuts import render
from Django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
mySite/settings.py:
...
INSTALLED_APPS = (
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'polls',
)
....
ROOT_URLCONF = 'mySite.urls'
私が得ているエラー:
Using the URLconf defined in mySite.urls, Django tried these URL patterns, in this order: ^admin/
The current URL, polls, didn't match any of these.
同じ問題がありました。
「mysite」という名前のディレクトリが複数あるため、混乱していたことがわかりました。
ルートの「mysite」ディレクトリ(「manage.py」を含む)に誤ってurls.pyファイルを作成し、Webサイトのコードに貼り付けました。
それを修正するために、このファイルを削除し、mysite/mysiteディレクトリ( "settings.py"を含む)に移動し、既存の "urls.py"ファイルを変更し、コードをチュートリアルコードに置き換えました。
簡単に言うと、urls.pyファイルが正しいディレクトリにあることを確認してください。
URL構成が127.0.0.1:8000/polls
として定義されているため、Djangoはr'^polls/'
を解決できません。
通常の回避策:
mySite/urls.py:
from Django.conf.urls import patterns, include, url
from Django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^polls/', include('polls.urls')),
)
注:Django=がinclude()に遭遇すると、その時点までに一致したURLの部分を切り取り、残りの文字列を、さらに処理するために含まれるURLconf
に送信します。
mySite/polls/urls.py:
from Django.conf.urls import patterns, url
from polls import views
urlpatterns = patterns('polls.views',
url(r'^$', 'index', name='index'),
)
注:urlpatternsの各エントリにそれを入力する代わりに、patterns()関数の最初の引数を使用して、適用するプレフィックスを指定できます各ビュー機能。
応答の場合
127.0.0.1:8000/polls
にアクセスする場合注:スラッシュなし
ビューベースのURLを使用
url(r'^polls', 'polls.views.index', name='index'),
これで、末尾のスラッシュなしで127.0.0.1:8000/polls
にアクセスできるようになりました。
http://yourdomain.com/ にアクセスしており、「/」に定義されたURLがありません。
次の2つのオプションがあります。
投票アプリケーションのインデックスページにアクセスする場合は、次のURLを入力する必要があります:yourdomain.com/polls
MySite/urls.pyファイルを変更して、yourdomain.comからアクセスすることもできます。
from Django.conf.urls import patterns, include, url
from Django.contrib import admin
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$', include('polls.urls')),
)
チュートリアルに従ってこの問題を抱えている初心者向けに答えを明確にするために、プロジェクトルートURLconfはsettings.pyと同じフォルダーにあります。
mysite/mysite/urls.py
必ず「include」をインポートしてください。コードは次のようになります。
from Django.conf.urls import include, url
from Django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls')),
]
Mysite/mysite/settings.pyで:
行は次のとおりです。
ROOT_URLCONF = 'mysite.urls'
新しいルートURLconfを新しく作成する必要はありません。
Urls.pyフォルダーを外側のMySiteフォルダーに配置します。mySite/ urls.pyではなくmySite/mySite/urls.pyのように内側に配置することになります。
チュートリアルをしたときに同じ間違いに遭遇しました
ROOT urls.pyを置く場所に応じて、ROOT_URLCONFIGを適切に設定します。manage.pyを含む最も外側のフォルダーにある場合、「urls」は問題ありません。他のフォルダにある場合は、「。urls」を実行する必要があります
jerryh91 への回答に対するクレジット
仕組みの詳細については、 How Djangoリクエストの処理
127.0.0.1:8000/polls
にアクセスする別の方法は、127.0.0.1:8000
にアクセスするときにブラウザーをリダイレクトすることです。それは次のように.../mysite/mysite/urls.py
を編集することで行われます:
from Django.conf.urls import include, url
from Django.contrib import admin
from polls import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^polls/', include('polls.urls', namespace='polls')),
url(r'^$', views.index, name='index'),
]
私は同じ問題を抱えていましたが、 http:// server:port / の後に/ pollsを追加することで解決しました。サーバーの最終アドレスは次のようになります。 http:// server:port /投票
2017-10-05_12:03〜/ mysite/mysite
$ vi urls.py 2017-10-05_12:04〜/ mysite/mysite
$ cd ../ .. 2017-10-05_12:04〜
$ mv mysite SENSIBLE_NAME_Django_ROOT
私の場合、それはstupid間違いでした。プラグインDjango-tinymceを統合してテストしたかったのです。 this ガイドに従って、ステップ3を実行し、変数をパスにエクスポートしました。サーバーが再び実行されると、次のメッセージを示すnot foundエラーを受け取りました。
Testtinymce.urlsで定義されたURLconfを使用して、Djangoは次の順序でこれらのURLパターンを試しました:....
しかし、変数Django_SETTINGS_MODULEのエクスポートを思い出すまで、正確にそれが何であるかを知りませんでした
ランニング unset Django_SETTINGS_MODULE
ターミナルで私の問題を解決しました。それが誰かにも役立つことを願っています。
Mysite/urls.py
に次の行を追加します
url(r'^$', views.index, name='index'),
確認してください。プロジェクトが正しく作成されていれば、動作するはずです。そうでなければ、上記のようなものがたまたま複数のファイルを持っているので混乱しているかもしれません。
実際問題は、mysite/urls.pyとpolls/urls.pyは2つの異なるファイルに気づかず、mysite/urls.pyを入れる代わりにpolls/urls.pyを変更したことです。 ... mysite\mysiteフォルダーのurls.pyファイル。