我有一个JS
模块(一堆接口代码)。我们称之为mymodule
。它位于myapp/modules/mymodule
。我希望将此模块与urls.py
和views.py
保持联系。换句话说,我想以某种方式从我的根myapp/modules/mymodule/urls.py
引用myapp/urls.py
,而不是将我的根myapp/views.py
与所有与mymodule
相关联的处理程序填充。所以,这就是我现在尝试的:
## myapp/urls.py
from django.conf.urls import url
from myapp import views
urlpatters = [
url(r'^$', views.index, name = 'index'),
... a lot of other urls
... and now I want to include urls associated with mymodule
url(r'^mymodule/',include('myapp.modules.mymodule.urls'))
]
## myapp/modules/mymodule/urls.py
from myapp.modules.mymodule import handlers
urlpatters = [
url(r'^dosomething/',handlers.dosomething)
]
## myapp/modules/mymodule/handlers.py
from django.http import HttpResponse
def dosomething(request):
return HttpResponse("Hello world!")
我想要这个 - 当用户前往127.0.0.1:8000/myapp/mymodule/dosomething
时,他或她应该看到“Hello world!”消息。
修改
我仍然会导致Page not found error
的代码的更新版本如下所示:
## myapp/urls.py
from django.conf.urls import *
from myapp import views
urlpatterns = patterns('',
url(r'^$',views.index, name='index'),
... a lot of other working urls
url(r'^myapp/mymodule',include('myapp.modules.mymodule.urls')),
)
## myapp/modules/mymodule/urls.py
from django.conf.urls import *
from myapp.modules.mymodule import handlers
urlpatterns = patterns('',
url(r'^dosomething/',handlers.dosomething),
)
## myapp/modules/mymodule/handlers.py
from django.http import HttpResponse
def dosomething(request):
return HttpResponse("Hello world!")
修改 我的root urls.py文件现在看起来像这样:
## myapp/urls.py
from django.conf.urls import *
from myapp import views
urlpatterns = patterns('',
url(r'^$',views.index, name='index'),
... a lot of other working urls
url(r'^myapp/mymodule/',include('myapp.modules.mymodule.urls')),
)
所以,现在有一个结束斜杠,但问题是 - 当我转到127.0.0.1:8000/myapp/mymodule/dosomething
时,Django调试器说Page not found
并且它只尝试了^myapp/ ^myapp/mymodule/
模式 - 所以我没有提到^dosomething/
模式。但是,如果我现在转到127.0.0.1:8000/myapp/myapp/mymodule/dosomething
,我现在在调试器页面中看到它尝试了^myapp/ ^myapp/mymodule/ /dosomething
模式。它说/dosomething
,因为我玩了mymodule / urls.py,现在它看起来像:
## myapp/modules/mymodule/urls.py
from django.conf.urls import *
from myapp.modules.mymodule import handlers
urlpatterns = patterns('',
url(r'/dosomething',handlers.dosomething),
)
所以,我想所有这些麻烦的原因是我无法将所有这些模式结合起来使它们起作用。我需要清楚地了解我的网址格式应该如何在根urls.py
内和myapp/urls.py
内
答案 0 :(得分:1)
将myapp
前缀添加到url regex:
url(r'^myapp/mymodule/',include('myapp.modules.mymodule.urls'))
另请注意,urlpatters
函数应创建from django.conf.urls import patterns
urlpatterns = patterns('',
...
)
:
urls.py
更新:抱歉,我没有注意到应用中的第一个urls.py
。我把它与项目urls.py
混淆了。我现在理解你应该有三个urlpatterns = patterns('',
url(r'^myapp/',include('myapp.urls')),
)
:
<强>项目/ urls.py 强>
urlpatterns = patterns('',
url(r'^mymodule/',include('myapp.modules.mymodule.urls')),
)
<强>的myapp / urls.py 强>
urlpatterns = patterns('',
url(r'dosomething/', handlers.dosomething),
)
<强>的myapp /模块/ MyModule的/ urls.py 强>
{{1}}