假设我创建了一个名为django_site
的django项目。
我创建了两个子项目:site1
和polls
。
你看我在两个子项目目录中有两个index.html
。
但是,现在,如果我在网络浏览器localhost:8000/site1
或localhost:8000/polls
上打开,他们都指向index.html
的polls
。
我如何配置所以当我打开localhost:8000/site1
它会使用index.html
的site1
?
我在settings.py
目录中的django_site
:
..
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates'),],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
..
我的目录结构:
E:.
| db.sqlite3
| manage.py
| tree.txt
| tree1.txt
|
+---site1
| | admin.py
| | apps.py
| | models.py
| | tests.py
| | urls.py
| | views.py
| | __init__.py
| |
| +---migrations
| | __init__.py
| |
| +---templates
| | \---site1
| | \---templates
| | index.html
| |
| \---__pycache__
| models.cpython-36.pyc
| urls.cpython-36.pyc
| views.cpython-36.pyc
| __init__.cpython-36.pyc
|
+---django_site
| | settings.py
| | urls.py
| | wsgi.py
| | __init__.py
| |
| \---__pycache__
| settings.cpython-36.pyc
| urls.cpython-36.pyc
| wsgi.cpython-36.pyc
| __init__.cpython-36.pyc
|
\---polls
| admin.py
| apps.py
| models.py
| tests.py
| urls.py
| views.py
| __init__.py
|
+---migrations
| | 0001_initial.py
| | 0002_auto_20180214_0906.py
| | __init__.py
| |
| \---__pycache__
| 0001_initial.cpython-36.pyc
| 0002_auto_20180214_0906.cpython-36.pyc
| __init__.cpython-36.pyc
|
+---static
| jquery-3.3.1.min.js
|
+---templates
| \---polls
| \---templates
| index.html
|
\---__pycache__
admin.cpython-36.pyc
apps.cpython-36.pyc
models.cpython-36.pyc
urls.cpython-36.pyc
views.cpython-36.pyc
__init__.cpython-36.pyc
我在urls.py
的django_site
from django.urls import include, path
from django.contrib import admin
urlpatterns = [
path('polls/', include('polls.urls')),
path('site1/', include('site1.urls')),
path('admin/', admin.site.urls),
]
我在urls.py
或site1
的polls
(他们是相同的):
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
你必须像这样配置网址:
在你的django_site directory
你有一个url文件。你必须从你所有的django应用程序中获取网址:
from django.urls import include, path
from django.contrib import admin
from polls import views
from site1 import views
urlpatterns = [
path('polls/', include('polls.urls')),
path('site1/', include('site1.urls')),
]
然后,在每个django模块中,您应该:
from django.urls import include, path
from django.contrib import admin
from polls import views
urlpatterns = [
path('', views.your_function, name="index"),
]
和site1
一样:
from django.urls import include, path
from django.contrib import admin
from site1 import views
urlpatterns = [
path('', views.your_function, name="index"),
]
views.your_function
必须返回你的索引模板:index.html
你的功能可能是:
def MyFunction(request):
return render(request, 'index.html')
通过这种方式,你必须得到:path('', views.MyFunction, name="index"),
我解决了这个问题:
在views.py
或site1
的polls
:
def index(request):
return render(request, 'polls/index.html', context)
在django_site
里面我创建了一个文件夹templates
,然后在这个文件夹中有两个文件夹site1
和polls
。在每个子文件夹中我分别放了index.html
。