1、项目的创建和运行
1、辅助文档点击进入Django官网中文手册
2、默认已装好Python
3、运行cmd安装Django4.0
pip install Django==4.0
安装高版本模块时如提示pip版本问题可执行已下命令升级pip
python -m pip install --upgrade pip
4、进入你自己的目录执行cmd使用Django-admin 创建项目FetchDataManagementPlatform
django-admin startproject FetchDataManagementPlatform
5、执行成功后用idea打开(vscode、pycham等都行)
上图是Django的项目目录结构,以及代码报错时python版本选择。文件是做什么的暂时不讲(我也不清楚…)
6、启动项目
6.1、命令行启动
指定端口启动
python manage.py runserver 8080
6.2、idea工具启动
启动效果
注意指定端口启动需要在idea配置里加上参数 runserver 8080。
6.3 通过IP访问需要修改配置
2、应用的创建
1、创建应用命令
python manage.py startapp mydata
2、创建应用的目录结构
3、开发视图
视图代码
from django.http import HttpResponse
from django.shortcuts import render
# Create your views here.
def index(request):
return HttpResponse("hello word!")
def add(request):
return HttpResponse("add.........")
4、配置路由
第一步在主路由中添加mydata应用路由(注意路径后的斜杠…)
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('mydata/', include("mydata.urls")),
]
第二步在mydata应用中添加本地路由(将FetchDataManagementPlatform目录下urls.py拷贝一份到mydata中根据提示配置)
from django.urls import path
from . import views
urlpatterns = [
path('',views.index,name="index"),
path('add/',views.add,name="add"),
]
如图
5、启动后效果图
3、项目的模型
1、MySql数据库连接配置点击查看Django4.0其他连接配置官网文档
2、辅助工作,建库、建表
mysql -uroot -p123456
1、建库并使用
create database mydata;
use mydata;
2、建表request_table
DROP TABLE IF EXISTS `request_table`;
CREATE TABLE `request_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`req_method` int(2) DEFAULT NULL COMMENT '请求方式',
`req_addr` varchar(2000) DEFAULT NULL COMMENT '请求地址',
`req_headers` varchar(2000) DEFAULT NULL COMMENT '请求头',
`req_body` blob COMMENT '请求体',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、加入一条数据:
INSERT INTO `mydata`.`request_table` (`id`, `req_method`, `req_addr`, `req_headers`, `req_body`) VALUES ('1', '1', 'https://www.toutiao.com', ' \"headers\": {\r\n \"accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\r\n \"accept-language\": \"zh-CN,zh;q=0.9\",\r\n \"if-modified-since\": \"Wed, 08 Dec 2021 13:25:37 GMT\",\r\n \"sec-ch-ua\": \"\\\" Not A;Brand\\\";v=\\\"99\\\", \\\"Chromium\\\";v=\\\"96\\\", \\\"Google Chrome\\\";v=\\\"96\\\"\",\r\n \"sec-ch-ua-mobile\": \"?1\",\r\n \"sec-ch-ua-platform\": \"\\\"Android\\\"\",\r\n \"sec-fetch-dest\": \"document\",\r\n \"sec-fetch-mode\": \"navigate\",\r\n \"sec-fetch-site\": \"none\",\r\n \"sec-fetch-user\": \"?1\",\r\n \"upgrade-insecure-requests\": \"1啊啊啊\"\r\n }', '{\r\n \"id\": 给我数据.....\r\n}');
4、建表response_table
DROP TABLE IF EXISTS `response_table`;
CREATE TABLE `response_table` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`req_id` bigint(20) DEFAULT NULL COMMENT '请求ID',
`res_line` varchar(2000) DEFAULT NULL COMMENT '响应行',
`res_headers` varchar(2000) DEFAULT NULL COMMENT '响应头',
`res_body` blob COMMENT '响应正文',
`req_time` varchar(30) DEFAULT NULL COMMENT '请求时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
3、在settings.py配置mysql数据库连接
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': BASE_DIR / 'db.sqlite3',
'ENGINE': 'django.db.backends.mysql',
'NAME':'mydata',
'USER':'root',
'PASSWORD':'123456',
'HOST':'localhost',
'PORT':'3307',
}
}
如图:
4、启动服务前需要安装mysqlclient
pip install mysqlclient
5、修改setting.py配置
添加:'mydata.apps.MydataConfig', #或直接写mydata
使与下面保持一致
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'mydata.apps.MydataConfig', #或直接写mydata
]
修改后台管理平台的语言和时区:
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
6、在mydata应用的models.py下敲与数据库表RequestTable的映射
from django.db import models
# Create your models here.
class RequestTable(models.Model):
id = models.BigIntegerField('ID',primary_key = True,db_column='id')
reqMethod = models.IntegerField('请求方式',db_column='req_method')
reqAddr = models.CharField('请求地址',max_length=2000,db_column='req_addr')
reqHeaders = models.CharField('请求头',max_length=2000,db_column='req_headers')
reqBody = models.TextField('请求体',db_column='req_body')
def __str__(self):
return "%d:%d:%s:%s:%s"%(self.id,self.reqMethod,self.reqAddr,self.reqHeaders,self.reqBody)
class Meta:
db_table="request_table"
verbose_name = "请求信息展示"
verbose_name_plural = '请求信息管理'
此时可以使用shell命令的方式查询数据库中数据操作如下:
python manage.py shell
from mydata.models import RequestTable
mod = RequestTable.objects
mod.get(id = 1)
如图:
7、在视图中使用model,通过请求显示表数据
修改mydata应用的views.py如下:
from django.shortcuts import render
from django.http import HttpResponse
from mydata.models import RequestTable
# Create your views here.
def index(res):
return HttpResponse("hello word")
def add(res):
mod = RequestTable.objects
list = mod.all()
for item in list:
item.reqBody = bytes(item.reqBody).decode('gbk')
print(item)
print(mod.get(id = 1))
return HttpResponse(list)
修改完成后点击启动,访问网页结果如图:
4、启用网站admin管理
1、初始化数据表
python manage.py migrate
2、创建超级管理员用户
python manage.py createsuperuser
3、配置后台管理样式
在mydata应用的admin.py中修改至如下:
from django.contrib import admin
# Register your models here.
from mydata.models import RequestTable
#固定写法一(默认排版)
# admin.site.register(RequestTable)
#固定写法二(稍微修改样式,请不要用于商业开发,否则修改样式灰常麻烦)
#RequestTable模型的管理器(装饰器写法
@admin.register(RequestTable)
class RequestTableAdmin(admin.ModelAdmin):
#listdisplay设置要显示在列表中的字段(id字段是Django模板的默认主键)
list_display = ('id','reqMethod','reqAddr','reqHeaders','reqBody')
#设置哪些字段可以点击进入编辑界面
list_display_links = ('id','reqAddr')
#list_per_page设置每页显示多少条记录,默认是100条
list_per_page = 8
#ordering设置默认排序字段,负号表示降序排序
ordering = ('id',)
#list_editable 设置默认可编辑字段(注意此处不能与list_display_links内容重复否则报错......)
list_editable = ('reqMethod','reqBody')
#其他请详见手册文档说明
如图:
4、登录后台管理系统查看详情
后台的作用:可以增加用户、修改密码、查看应用(必须在代码中注册才能看到自己创建的应用)、查看表数据、新增表数据、修改表数据等。