django:404(main.urls 未包含在 myproject/urls.py 中?)
django : 404 (main.urls not included in myproject/urls.py?)
我有以下问题:
我做了一个小的 django (1.7.8) 项目(名为 djangoccmstest)来测试 django-cms (但它可能只与 django 有关,我对此不确定。
我尝试访问 localhost:8000/one 并遇到以下问题:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/one/
Using the URLconf defined in djangocmstest.urls, Django tried these URL patterns, in this order:
^en/
^media\/(?P<path>.*)$
The current URL, one/, didn't match any of these.
我制作了以下文件:
djangocmstest/urls.py :
我按照建议添加了 url(r'^/', include('cms.urls')),
here。
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^/', include('main.urls')),
url(r'^/', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main/urls.py :
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = patterns('main.views',
url(r'^one/$', 'template_one'),
)
由于某些原因,main/urls.py 文件内容似乎没有包含在 djangocmstest/urls.py[ 中=59=].
我该如何解决这个问题?
编辑:
在浏览器(“.../en/one”)中使用正确的 URL(如@catavaran 所建议的),我得到以下信息:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/en/one
Using the URLconf defined in djangocmstest.urls, Django tried these URL patterns, in this order:
^en/ ^admin/
^en/ ^/
^en/ ^/
^media\/(?P<path>.*)$
The current URL, en/one, didn't match any of these.
编辑 2(已修复):
我现在有这些文件(并且有效 :)):
main/urls.py :
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = patterns('main.views',
url(r'^one/$', 'template_one'),
)
djangocmstest/urls.py :
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在项目的 urls.py
中,您使用 i18n_patterns
而不是简单的 patterns
,因此您页面的 url 应该是:
/en/one/
更新:从项目 urls.py
的正则表达式中删除尾部斜杠。所以正则表达式应该是 r'^'
而不是 r'^/'
:
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您正在使用同一个正则表达式的两个包含。这样,包含将不起作用。试试这个:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^cms/', include('cms.urls')),
url(r'^/', include('main.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main.urls
和 cms.urls
的正则表达式不应包含正斜杠:
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
此外,当您执行查询时,请确保它是针对
http://127.0.0.1:8000/en/one/
因为您的 main.urls
文件中确实有尾部斜杠。
我有以下问题:
我做了一个小的 django (1.7.8) 项目(名为 djangoccmstest)来测试 django-cms (但它可能只与 django 有关,我对此不确定。
我尝试访问 localhost:8000/one 并遇到以下问题:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/one/
Using the URLconf defined in djangocmstest.urls, Django tried these URL patterns, in this order:
^en/
^media\/(?P<path>.*)$
The current URL, one/, didn't match any of these.
我制作了以下文件:
djangocmstest/urls.py :
我按照建议添加了 url(r'^/', include('cms.urls')),
here。
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^/', include('main.urls')),
url(r'^/', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main/urls.py :
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = patterns('main.views',
url(r'^one/$', 'template_one'),
)
由于某些原因,main/urls.py 文件内容似乎没有包含在 djangocmstest/urls.py[ 中=59=].
我该如何解决这个问题?
编辑: 在浏览器(“.../en/one”)中使用正确的 URL(如@catavaran 所建议的),我得到以下信息:
Page not found (404)
Request Method: GET
Request URL: http://127.0.0.1:8000/en/one
Using the URLconf defined in djangocmstest.urls, Django tried these URL patterns, in this order:
^en/ ^admin/
^en/ ^/
^en/ ^/
^media\/(?P<path>.*)$
The current URL, en/one, didn't match any of these.
编辑 2(已修复): 我现在有这些文件(并且有效 :)):
main/urls.py :
from django.conf.urls import patterns, include, url
from django.conf.urls.static import static
from django.conf import settings
urlpatterns = patterns('main.views',
url(r'^one/$', 'template_one'),
)
djangocmstest/urls.py :
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
在项目的 urls.py
中,您使用 i18n_patterns
而不是简单的 patterns
,因此您页面的 url 应该是:
/en/one/
更新:从项目 urls.py
的正则表达式中删除尾部斜杠。所以正则表达式应该是 r'^'
而不是 r'^/'
:
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
您正在使用同一个正则表达式的两个包含。这样,包含将不起作用。试试这个:
from django.conf.urls import patterns, include, url
from django.contrib import admin
from django.conf import settings
from django.conf.urls.i18n import i18n_patterns
from django.conf.urls.static import static
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^cms/', include('cms.urls')),
url(r'^/', include('main.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
main.urls
和 cms.urls
的正则表达式不应包含正斜杠:
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
# Please note that I'm not sure how to handle
# the order of the two following lines.
url(r'^', include('main.urls')),
url(r'^', include('cms.urls')),
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
此外,当您执行查询时,请确保它是针对
http://127.0.0.1:8000/en/one/
因为您的 main.urls
文件中确实有尾部斜杠。