Django+HTML+MYSQL

一:创建django项目 虚拟环境创建django 安装virtualenv模块(虚拟环境):pip install virtualenv 创建一个项目文件夹

一:创建django项目

虚拟环境创建django 安装virtualenv模块(虚拟环境):pip install virtualenv 创建一个项目文件夹:mkdir mysite01 切换到项目文件夹:cd mysite01 创建一个虚拟环境:virtualenv .venv 启动这个虚拟环境:.venv\Scripts\activate.bat 安装django指定版本:pip install django==3.2 创建一个django项目:django-admin startproject pyproject. 创建一个app应用:python manage.py startapp book

二:在django项目中修改配置文件setting.py

1.DEBUG = True  #为True时方便我们测试,报错会给出提示,方便我们开发。为Flase时为正式上线时的,会报错,但是不会给出提示,就跟正常的页面报错信息一样
2.ALLOWED_HOSTS = []  #请求HOST头,主要时上线后过滤使用,如果我们在开发时不是在本地运行django,比如我们要添加内网IP添加到该列表中才能够访问
3.ROOT_URLCONF = ‘project.urls’  #Django访问的主路由,一般情况下不会变。
4.LANGUAGE_CODE = ‘zh-Hans’  #修改语言为中文
5.TIME_ZONE = ‘Asia/Shanghai’  #修改地区时间,以上海为准,否则和我们中国的时间对不上

6.配置数据库:

'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'book',     #数据库名字,数据库不存在的话需要手动创建'USER': 'root',    #mysql数据库的账号'PASSWORD': 'centos',#mysql数据库的密码'HOST': '127.0.0.1',#ip'PORT': '3306',#端口号'OPTIONS': {'autocommit': True,'init_command': "SET sql_mode='STRICT_TRANS_TABLES'",},
}

7.修改中间件配置

MIDDLEWARE = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',#'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',
]

8.TEMPLATES配置,用于指定模板配置信息

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',],},},

9,添加app到INSTALLED_APPS中

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','book',
]

三:路由配置

1配置分发路由url

1.1 首先在项目文件目录下的urls中设置 该路径下的路由为主路由,设置路由分发,分到book应用中,

     from django.contrib import adminfrom django.urls import path,include  #记得导入includeurlpatterns = [path('admin/', admin.site.urls), #可以保留admin,基本上都会用到path('book', include('book.urls')), #配置分发路由的path,理解主路由包含分发的bookluyou]

1.2然后在book应用下创建urls.py文件,写入内容(手动创建)

from django.urls import path
from . import views #导入同目录下的views文件,里面为视图函数逻辑
urlpatterns = [path('book_index', views.book_index),# path('book_index', views.book_index),(前者路由名称,对应views中的def book_index(request)函数)
]

四:views.py视图函数

from django.shortcuts import render,redirect
#编写视图函数
def book_index(request):return render(request,'book_index.html')#返回到book_index.html页面

五:创建数据models,在book中的models.py中创建数据表

from django.db import models
​
class book(models.Model):title = models.CharField(max_length=22)  #名称author = models.CharField(max_length=22) #作者pub = models.CharField(max_length=50) #出版社price = models.DecimalField(max_digits=7,decimal_places=2,default=0.0) #价格market_price = models.DecimalField(max_digits=7,decimal_places=2,default=0.0) #零售价class Meta:db_table = 'book' #数据库中的名字重命名,否则数据库中的名字为app名+类名(也就是book_book)#添加meta类后就重命名为book,方便数据库管理def __str__(self):return '%s_%s_%s_%s_%s' % (self.title, self.author,self.pub,self.price,self.market_price)#def __str__(self)为quersite显示结果处理

六:数据迁移指令

​
(.venv) E:\mysite01\.venv\Scripts\myproject>python manage.py makemigrations
​
(.venv) E:\mysite01\.venv\Scripts\myproject>python manage.py migrate

6.1连接数据检出是否创建成功数据库

mysqp -uroot -p123456
show databases;  #(显示所有的的数据库,这里显示只有一个叫book的数据库)
+--------------------+
| Database           |
+--------------------+
| book               |
+--------------------+
9 rows in set (0.01 sec)
use book  #(使用数据库book)
mysql> desc book; #(显示数据库book的结构)
+--------------+--------------+------+-----+---------+----------------+
| Field        | Type         | Null | Key | Default | Extra          |
+--------------+--------------+------+-----+---------+----------------+
| id           | bigint       | NO   | PRI | NULL    | auto_increment |
| title        | varchar(22)  | NO   |     | NULL    |                |
| author       | varchar(22)  | NO   |     | NULL    |                |
| pub          | varchar(50)  | NO   |     | NULL    |                |
| price        | decimal(7,2) | NO   |     | NULL    |                |
| market_price | decimal(7,2) | NO   |     | NULL    |                |
+--------------+--------------+------+-----+---------+----------------+

6.2.在数据中添加数据

6.2.1:使用django shell创建数据

-1,使用 python manage.py shell 命令进入django shell

  python manage.py shell-In [1]: from book.models import book #从book的models中导入book[1]: b1 = book.objects.create(title = '数据结构',author = '谭耀忠',pub = '人民出版社',price                     = 99.0,market_price = 102.0)

6.2.2:使用视图函数逻辑添加数据

# views.pyfrom django.shortcuts import render,redirectfrom .models import bookdef book_index(request):all_book =book.objects.all()b2 = book.objects.create(title = 'c语言',author = '刘国庆',pub = '清华出版社',price                 = 54.0,market_price = 60.0)b2.save()return render(request,'book_index.html',locals())

七:book_index的html页面显示



book_index页面


{% for book in all_book %}{%endfor%}
书名作者出版社价格零售价格操作
{{book.title}}{{book.author}}{{book.pub}}{{book.price}}{{book.market_price}}添加编辑删除

八:添加视图函数逻辑添加增加书籍函数

#views.py
def add_book(request):#如果是methord==get,就返回add_book界面if request.method == "GET":return render(request,'add_book.html',locals())#如果是methord==post,就返回图书界面界面elif request.method == "POST":#获得html中的的input框中的属性字段,赋值给book.objects.createtitle = request.POST.get('title')author = request.POST.get('author')pub = request.POST.get('pub')price = request.POST.get('price')market_price = request.POST.get('market_price')#将从input框中得到的属性值赋给book.objects.create创建数据contion = book.objects.create(title=title,author=author,pub=pub,price=price,market_price=market_price)contion.save()return redirect('/book/book_index')

九:add_book.html页面



添加


# action="/book/add_book"下的POST#"/book/add_book"对齐urls下的接口书名作者出版社价格零售价

9.1.urls.py设置路由

from django.urls import path
from . import views
​
urlpatterns = [path('book_index', views.book_index),path('add_book', views.add_book),
]
​

十:总结

步骤:

1,创建django项目

2,配置seethings.py 文件

3,urls 添加路由(可以设置路由分发路由)

4,views 添加路由对应的逻辑

5,添加相应的视图(html)

6,数据库添加

7,按照这样的思路继续添加其他功能

我的django+HTML+MySQL项目:https://gitee.com/double0605/django.git