django:404(main.urls不包含在myproject / urls.py中吗?) [英] django : 404 (main.urls not included in myproject/urls.py?)
问题描述
我有以下问题:
我做了一个django(1.7.8)小项目(名为 djangocmstest )来测试 django-cms (但它可能与django有关,我不确定。)
我尝试访问 localhost:8000 / one 并遇到以下问题:
找不到页面(404)
请求方法:GET
请求URL:http: //127.0.0.1:8000/one/
使用djangocmstest.urls中定义的URLconf,Django按以下顺序尝试了以下URL模式:
^ en /
^ media\ /(?P< path>。*)$
当前URL one /与任何这些都不匹配。
我制作了以下文件:
djangocmstest / urls.py:
我添加了 url(r'^ /',include('cms .urls')),
,如此处。
来自django.conf.urls导入模式,包括url $ b从django.contrib导入$ b从django.conf导入管理
从django.conf.urls.i18n导入
从django.conf.urls.i18n导入i18n_patterns从django.conf.urls.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,做cument_root = settings.MEDIA_ROOT)
main / urls.py:
从django.conf.urls导入模式,包括url
从django.conf.urls.static导入静态$ b来自django.conf的$ b导入设置
urlpatterns = pattern('main.views',
url(r'^ one / $','template_one'),
)
由于某些原因, main / urls.py 文件内容不存在似乎被包含在 djangocmstest / urls.py 中。
我该如何解决?
编辑:
在浏览器中使用正确的URL(由@catavaran建议)( ... / en / one),我得到以下信息:
找不到页面(404)
请求方法:GET
请求URL:http://127.0.0.1 :8000 / en / one
使用djangocmstest.urls中定义的URLconf,Django按以下顺序尝试了以下URL模式:
^ en / ^ admin /
^ en / ^ /
^ en / ^ /
^ media\ /(?P&path;。*)$
当前URL(en / one)与以下任何一个都不匹配这些。
编辑2(固定):
我现在有这些文件(并且有效:)):
main / urls.py:
<来自django.conf.urls的pre>
导入模式,包括来自django.conf.urls.static的url
来自django.conf导入设置的静态
导入设置
urlpatterns =模式('main.views',
url(r'^ one / $','template_one'),
)
djangocmstest / urls.py:
<从django.conf.urls导入code>,包括从django.contrib导入url
从django.conf导入admin
从django.conf.urls.i18n导入设置
来自django.conf.urls.static的i18n_patterns
静态导入静态
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
,因此您网页的网址应为:
/ en / one /
更新:从项目 urls.py <中的正则表达式中删除斜杠。 / code>。因此,正则表达式应为
r'^'
,而不是 r'^ /'
:
urlpatterns = i18n_patterns('',
url(r'^ admin /',include(admin.site.urls)),
url(r'^',include('main.urls')),
url(r'^',include('cms.urls')),
)+静态(settings.MEDIA_URL ,document_root = settings.MEDIA_ROOT)
I have the following problem :
I've made a little django (1.7.8) project (named djangocmstest) to test django-cms (but it could be related with just django, I'm not sure about this).
I try to access localhost:8000/one and get the following issue :
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.
I've made the following files :
djangocmstest/urls.py :
I added url(r'^/', include('cms.urls')),
as suggested 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'),
)
For some reason, the main/urls.py file content doesn't seem to be included into djangocmstest/urls.py.
How could I fix this?
EDIT : With the correct URL (as suggested by @catavaran ) in the browser (".../en/one") I get the following :
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.
EDIT 2 (FIXED) : I now have these files (and it works :) ) :
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)
In the project's urls.py
you use the i18n_patterns
instead of simple patterns
so url for your page should be:
/en/one/
UPDATE: Remove the trailing slashes from the regexes in the project's urls.py
. So regex should be r'^'
but not the 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)
这篇关于django:404(main.urls不包含在myproject / urls.py中吗?)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!