96

2台の別々のコンピューターに2つのアプリケーションがあります。コンピューターAのurls.pyファイルには、次のような行があります。

(r'^cast/$', 'mySite.simulate.views.cast')

そして、そのURLはとの両方mySite.com/cast/で機能しmySite.com/castます。しかし、コンピューターBIには、次のように書き出された同様のURLがあります。

(r'^login/$', 'mySite.myUser.views.login')

何らかの理由で、コンピューターBではurl mySite.com/login/は機能しますが、mySite.com/loginハングして、コンピューターAでのように直接戻ることはありませんmySite.com/login/。私が見逃したものはありますか?どちらのurl.pyファイルも私と同じように見えます。

4

6 に答える 6

211

または、次のように URL を記述できます。

(r'^login/?$', 'mySite.myUser.views.login')

末尾のスラッシュの後の疑問符は、正規表現ではオプションになります。何らかの理由で APPEND_SLASH 設定を使用したくない場合に使用します。

于 2012-07-27T14:44:14.147 に答える
113

APPEND_SLASHsettings.py ファイルの設定を確認してください

django ドキュメントの詳細

于 2009-10-20T18:49:39.500 に答える
23

これは@Michael Gendinの回答を改善します。彼の回答は、2 つの別々の URL を持つ同一のページを提供しています。にlogin自動的にリダイレクトしlogin/、後者をメイン ページとして提供することをお勧めします。

from django.conf.urls import patterns
from django.views.generic import RedirectView

urlpatterns = patterns('',
    # Redirect login to login/
    (r'^login$', RedirectView.as_view(url = '/login/')),
    # Handle the page with the slash.
    (r'^login/', "views.my_handler"),
)
于 2016-06-02T23:11:40.523 に答える
3

私も同じ問題を抱えていました。私の解決策は、正規表現の最後の行の前に (|/) を置きました。

url(r'^artists/(?P[\d]+)(|/)$', ArtistDetailView.as_view()),

于 2015-08-18T17:30:07.590 に答える
0

私は同じ問題を抱えていました。私の場合、静的ファイルの前から、urls.py のいくつかの古いバージョンからの古い残り物でした:

url(r'^%s(?P<path>.*)$' % settings.MEDIA_URL.lstrip('/'),
    'django.views.static.serve',
    kwargs={'document_root': settings.MEDIA_ROOT}),

MEDIA_URL は空だったので、このパターンはすべてに一致しました。

于 2015-06-09T15:23:42.217 に答える