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访问需要修改配置
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、启动后效果图
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": {rn "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",rn "accept-language": "zh-CN,zh;q=0.9",rn "if-modified-since": "Wed, 08 Dec 2021 13:25:37 GMT",rn "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"96\", \"Google Chrome\";v=\"96\"",rn "sec-ch-ua-mobile": "?1",rn "sec-ch-ua-platform": "\"Android\"",rn "sec-fetch-dest": "document",rn "sec-fetch-mode": "navigate",rn "sec-fetch-site": "none",rn "sec-fetch-user": "?1",rn "upgrade-insecure-requests": "1啊啊啊"rn }', '{rn "id": 给我数据.....rn}');
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)
修改完成后点击启动,访问网页结果如图:
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、登录后台管理系统查看详情
后台的作用:可以增加用户、修改密码、查看应用(必须在代码中注册才能看到自己创建的应用)、查看表数据、新增表数据、修改表数据等。



