Django - 首页
使用 startproject 命令 创建一个新的 Django 项目时,URL http://localhost:8000/ 会显示一个 默认首页。这表明 Django 安装成功。
使用以下命令创建一个项目 −
django-admin startproject myproject
现在你的项目已创建并配置完成,确保它能正常运行 −
python manage.py runserver
运行上述命令后,你会在屏幕上看到类似以下内容 −
Validating models... 0 errors found March 09, 2022 - 12:24:26 Django version 4.0, using settings 'myproject.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.Quit the server with CONTROL-C.
开发服务器正在 http://127.0.0.1:8000/ 运行。在浏览器中打开该链接。
在主 “myproject” 文件夹中,使用 manage.py 命令 −
python manage.py startapp myapp
你刚刚创建了 myapp 应用。Django 还会创建一个带有应用结构的 “myapp” 文件夹 −
myapp/ __init__.py admin.py models.py tests.py views.py
- __init__.py − 只是为了让 Python 将此文件夹视为一个 package。
- admin.py − 此文件帮助你在 admin 界面中修改应用。
- models.py − 这是存储所有应用 models 的地方。
- tests.py − 这是你的 unit tests 所在的地方。
- views.py − 这是你的应用 views 所在的地方。
更新项目 settings.py 文件中的 INSTALLED_APPS 列表(添加你的应用名称)−
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'myapp',]
我们将在 myapp 中创建一个简单的 view 来显示 “欢迎来到我的应用!”
打开 “myapp\views.py” 并添加以下 view 函数 −
from django.shortcuts import render
# 在这里创建你的 views。
def index(request):
# 其他 view 代码
return render(request, index.html', {})
在这个 view 中,我们使用 HttpResponse 来渲染 HTML 页面。要将此 view 显示为一个页面,我们只需将其映射到一个 URL。
将以下 Python 脚本保存为 myapp/urls.py −
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
下一步是将根 URLconf 指向 myapp.urls 模块。
在 myproject/urls.py 中,添加 django.urls.include 的 import,并在 urlpatterns 列表中插入一个 include(),如下所示 −
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('', include('myapp.urls')),
path('admin/', admin.site.urls),
]
现在运行 Django 开发服务器 −
python manage.py runserver
访问以下 URL 以 验证 index view 是否已渲染 −
http://localhost:8000/
你应该能看到首页的输出。
一个带有多个 app 的 Django 主页
然而,一个 Django 项目可能包含多个 app。因此,项目主页应该包含各个 app 主页的链接。
让我们在当前 Django 项目中创建两个 app −
python manage.py startapp customers
以及,
python manage.py startapp products
重写项目的主 index 页面,如下所示 −
<!Doctype html>
<html>
<body>
<!--header-->
<div style="height:10%;">
<h2 align="center">My Web Application</h2>
<hr>
</div>
<div style="width:100%;">
<!side bar-->
<div style="width:20%; float:left; border-right-style:groove">
<ul>
<b>
<li><a href="admin/">Admin</a></li>
<li><a href="customers/">Customers</a></li>
<li><a href="Products/">Products</a></li>
</b>
</ul>
</div>
<!--contents-->
<div style="margin-left:21%;">
<p>
<h2 align="center">Main Index Page</h2>
</p>
</div>
</div>
<br><br><br>
<!--footer-->
<hr>
<div>
<h4 align="right">All rights reserved</h4>
</div>
</body>
</html>
customer app 的 index 页面应该保存在 templates 目录中。它由 customers/views.py 文件中的 view 渲染 −
from django.shortcuts import render
# 在这里创建你的 views。
def index(request):
return render(request, "customerindex.html", {})
类似地,为 products app 创建 index 页面,并在其对应的 "products/views.py" 文件中定义映射的 view −
from django.shortcuts import render
# 在这里创建你的 views。
def index(request):
return render(request, "productindex.html", {})
你还需要为每个 app 定义 urlpatterns 列表,如下所示 −
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="customer-index"),
]
类似地,为 products app 执行相同的操作 −
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="product-index"),
]
更新 myproject/urls.py 文件的 URLCONF −
from django.contrib import admin
from django.urls import path, include
from . import views
urlpatterns = [
path('admin/', admin.site.urls),
path('products/', include("products.urls")),
path('customers/', include("customers.urls")),
path('', views.index, name='index'),
]
运行 Django 服务器并访问 Django 项目的根 URL (http://localhost:8000/) −
