的原因,我回答这个问题,是因为它是几年前回答这些问题的答案是不正确的或有用了较新的Django版本,或者有一个更好的做法,你应该知道。
因此,如果您的Django项目中有多个应用程序,那么您应该为每个应用程序使用一个新的urls.py文件。这意味着如果您启动一个新的应用程序,那么您必须在新应用程序的子文件夹中手动创建一个名为urls.py的新文件。许多初学者首先不明白为什么这很好,但如果您计划在一个Django项目中创建更多应用程序,这是一个很好的做法。
当你开始一个项目时,urls.py文件会自动在你的项目文件夹中创建,但是如果你在Django中创建/启动一个新的应用程序,那么这是一个很好的做法,如果你为此创建了一个单独的urls.py应用程序在自己的文件夹。 (这样你就永远不会有“首先将不同应用的视图导入到urls.py”问题)。
您创建了您的应用程序的urls.py文件后,那么你必须包括,在项目的urls.py文件的应用程序的urls.py文件以下列方式:
我们先来看看一个例子你创建一个名为'my_new_app'的新应用程序。 这是项目的主urls.py文件应该如何看起来像:
from django.conf.urls import url, include
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^my_new_app/', include('my_new_app.urls')),
]
在项目的urls.py文件,你必须导入“包括”方法,那么你可以包括你的my_new_app urls.py文件您的项目的主要urls.py文件。在您的my_new_app文件夹中,您必须手动创建一个urls.py文件,如上所述。然后你必须使用该文件来处理my_new_app的所有urlpatterns。那么当然这样它会被自动包含在你的项目的主要urls.py文件中。
所以这就是那么你my_new_app自己urls.py文件应该如何看起来像:
from django.conf.urls import url
from my_new_app import views
urlpatterns = [
url(r'^$', views.index, name = "index"),
]
假设你也是你的“my_new_app/views.py文件创建一个名为“索引”的第一图。
my_new_app/views.py文件是这样的:
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World!")
而且你可以在浏览器在检查my_new_app:
http://localhost:8000/my_new_app
(当然,你可以给任何网址到my_new_app在您的项目的urls.py文件中。)
现在,您可以在您的Django项目中创建另一个名为my_second_app的应用程序,并且您应该为该应用程序重复上述步骤。这样,您将不会有任何问题将来自不同应用的视图导入到urls.py文件中。对于Django 1.11中的这个问题,这将是一个非常基本的“良好实践解决方案”。
这没有奏效,但谢谢你的建议。 – William 2012-07-11 19:09:33
@罗伯特:有几个拼写错误(我固定),除了这是一个工作解决方案。您不必将我们的答案复制并粘贴到代码中,最好了解它们并找到解决问题的方法。你也可以自由地[接受](http://meta.stackexchange.com/a/5235/177799)帮助你的答案。 – 2012-07-11 19:22:13
Rik,你通过Simon Visser的第二个建议,确实也有效。谢谢。 – William 2012-07-11 20:22:53