简介
本文介绍在Linux环境下,安装Python3和Django,创建名为library
的项目。创建超级用户并注册应用到admin.py
。配置URL路由,创建模板文件book_list.html
展示书籍列表。访问查看结果,确保已更新ALLOWED_HOSTS
。如果遇到问题,如admin访问错误,可运行管理 shell 调整站点设置。
1, linux 环境及项目创建
安装python3,django
执行安装:
apt install python3 && pip install django \~=3.1.0
mkdir code && cd code
mkdir library && library
初始化项目
django-admin startproject config .
2 项目文件解释
创建初期为空文件,有此文件的 文件夹被视为一个 python包
__init__.py
异步网关服务接口
asgi.py
包含项目的所有配置
settings.py
顶层 页面路由 控制
urls.py
代表Web服务器网关接口 并帮助 Django服务最终的网页
wsgi.py
执行各种Django命令,例如运行本地Web服务器或创建新应用。
manage.py
如果远程开发,需要添加 本地机器ip 或域名到允许列表
ALLOWED_HOSTS = ["127.0.0.1"]
config/setting.py
数据环境创建
python manage.py migrate
在1999端口启动服务
python manage.py runserver 0.0.0.0:1999
创建一个app 应用
python manage.py startapp books
应用文件解释,创建的应用books 包含6个文件
内置的Django 应用程序Admin的配置文件
admin.py
是应用本身的配置文件
apps.py
目录存储迁移文件以进行数据库更改
migrations/
定义数据库模型的地方
models.py
应用测试文件
tests.py
处理Web应用程序的请求/响应逻辑的地方
views.py
3 将app 构建为整体web应用
- 新建app配置
在config/setting 添加新的app到配置项 INSTALLED_APPS configuration
数据库,视图,连接,模板 数据库创建及管理员
books/models.py from django.db import models
一切开始的地方,创建应用类
class Book(models.Model):
title = models.CharField(max_length=250)
subtitle = models.CharField(max_length=250)
author = models.CharField(max_length=100)
isbn = models.CharField(max_length=13)
def __str__(self):
return self.title
编辑模型models.py后 执行更新
python manage.py makemigrations books && python manage.py migrate
管理员创建
python manage.py createsuperuser
username: admin
password: admin123
4 配置注册应用程序
应用注册管理
#admin.py
from .models import Book
admin.site.register(Book)
在setting.py中配置注册, 配置注册后需要重启服务
在1999端口启动服务
python manage.py runserver 0.0.0.0:1999
在/admin 管理页面创建一本书,一个项目,通常将其显示为网页,表示 创建4个文件。
控制如何显示 数据库中的数据,如果是列表形式则使用默认的ListView
books/views,
用户访问页面时,将首先与此互动
config/urls,
与config/urls 互动后 将到达这里,使用BookListView
books/urls
在此视图文件中,Book模型与ListView一起使用以列出所有页面模板
books/template
最后一步是创建我们的模板文件,以控制实际网页上的布局。
我们已经在视图中将其名称指定为book_list.html。
它有两个选择位置:默认情况下,Django模板加载器会在位置:
books/templates/books/book_list.html。
我们也可以创建一个单独的改为在项目级别的模板目录中更新我们的config/settings.py文件以指向该目录
代码如下:
cat books/views.py
from django.shortcuts import render
在在此处创建视图
from django.views.generic import ListView
from .models import Book
class BookListView(ListView):
model = Book
template_name = 'book_list.html'
config/urls.py
如果用户访问 路由 /admin/ 则访问这个默认app admin
from django.contrib import admin
include 将使用自定义的app books
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
根路径为 books 路由
path('', include('books.urls')),
]
查看 books/urls.py
from django.urls import path
from .views import BookListView
urlpatterns = [
path('', BookListView.as_view(), name='home'),
]
查看 books/templates/books/book_list.html
<h1>All books</h1>
{% for book in object_list %}
<ul><li>Title: {
{ book.title }}</li>
<li>Subtitle: {
{ book.subtitle }}</li>
<li>Author: {
{ book.author }}</li>
<li>ISBN: {
{ book.isbn }}</li>
</ul>
{% endfor %}
重启服务,并访问根路径将列出所有图书 http://127.0.0.1:1999/
错误处理,如果 admin管理界面访问错误
$> ./manage.py shell
>>> from django.contrib.sites.models import Site
>>> site = Site.objects.create(domain='example.com', name='example.com')
>>> site.save()
5 小结
使用django-admin startproject config .
初始化项目。项目将包含__init__.py
, asgi.py
, settings.py
, urls.py
, wsgi.py
和manage.py
等文件。
创建APPbooks
,包含admin.py
, apps.py
, migrations/
, models.py
, tests.py
和views.py
。在models.py
定义Book模型,执行makemigrations
和migrate
命令初始化数据库等基本操作。