经过自己的钻研和学习,大致搞懂了Django项目的具体流程
实属不易,弄了好几天才搞懂,现使用Pycharm详细叙述一下步骤
环境:Python3.7、Django3.0.3、pymysql0.9.3(但要注意可能会报错)
1.使用PyCharm创建Django项目
2.用命令创建新的应用app
app名根据需要自己设定,点击左下角Teminal,命令输进去回车即可
python manage.py startapp defog
执行完成后,将会在项目中创建defog目录
3.将新建的app加入到环境,settings.py文件中
将app名字添加到INSTALLEN_APPS中
4.修改数据库连接配置
项目默认使用sqllite,我使用mysql,需要进行如下配置
要想数据库连接时使用mysql还需要在__init__.py 填入两行代码
代码奉上:
import pymysql
pymysql.install_as_MySQLdb()
5.在新建app中的models.py文件中创建数据库实体类
每个class对应数据库中的一张表
from django.db import models
# Create your models here.
# 在此文件中创建对应的实体类
class Img(models.Model):
ID = models.IntegerField(primary_key=True)
originImg = models.CharField(max_length=100)
afterImg = models.CharField(max_length=100)
6.进行数据迁移
在数据库中创建对应的表,前提数据库必须存在
在Terminal中执行如下代码:执行完成后刷新数据即可
# 创建实体对象
python manage.py makemigrations
# 在数据库中创建表格
python manage.py migrate
会多出好多张表,其余表不用关心,查看是否包含我们需要的表 defog_img
注意:在执行上边两条命令时,可能会因为版本问题出错:版本冲突
生成数据表后,可以在PyCharm的Terminal中对数据库进行增删改的操作,用的比较少,了解就行,此处省略
7.进行管理员界面配置
修改settings.py中的内容,是界面显示中文
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
创建超级用户,执行命令,回车后依次输入用户名、邮箱、密码
python manage.py createsuperuser
在defog中的admin.py中注册模型类,代码如下:注册有两种形式 1.装饰器注册 2.用admin.site.register()
from .models import Img
# 注册
@admin.register(Img) # 使用装饰器注册
class ImgAdmin(admin.ModelAdmin):
# 列表属性
list_display = ['pk','originImg','afterImg']
list_filter = ['originImg'] # 过滤器,按照某个字段过滤
search_fields = ['afterImg'] # 搜索,有那个字段能够用那些字段进行搜索
list_per_page = 5 #分页,每5条分一页
# 添加、修改页属性
# fields = ['proceImg','originImg'] # 可以规定属性的修改顺序
fieldsets = [
('id',{"fields":['ID']}),
('origin',{"fields":['originImg']}),
('after',{"fields":['afterImg']}),
] #给属性分组,注意:fieldsets与fields不能同时使用
# admin.site.register(Img,ImgAdmin)
完成后,运行项目,在地址栏输入http://127.0.0.1:8000/admin,输入刚刚创建的账号密码即可进入用户管理页面,可以进行对数据的增删改查
8.最后编写html页面配置settings.py的TEMPLATES即可进行交互
PyCharm默认已经将TEMPLATES配置完成,若没有,可手动添加
将获取到的数据通过views.py层的处理,转发到HTML页面进行展示
show.html页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>显示所有图像列表</title>
</head>
<body>
<h2>图像列表</h2>
<table border="1px" cellspacing="1px" cellpadding="0px">
<tr>
<th>id</th>
<th>originImg</th>
<th>afterImg</th>
</tr>
{% for img in imgs %}
<tr>
<td>{{ img.ID }}</td>
<td>{{ img.originImg }}</td>
<td>{{ img.afterImg }}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
9.编写views.py层代码
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
from django.http import Http404
from .models import Img
def index(request):
return HttpResponse("hello world")
def detail(request,num):
return HttpResponse('detail-%s'%num)
# 从数据库中获取所有Img实体类
def findAll(request):
imgs = Img.objects.all()
return render(request,"defog/show.html",{'imgs':imgs})
10.配置项目urls.py路径
第一步:配置transport项目下的urls.py路径,配置路径从而可以访问到defog下的urls.py中配置的路径
from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 配置默认路径路由,无论什么路径都将转发到defog项目下的urls.py中
url(r'^', include('defog.urls')),
]
第二步:配置defog下urls.py中的路径
from django.conf.urls import url
from defog import views
urlpatterns=[
url(r'^$',views.index),
url(r'^(\d+)/$',views.detail), # 正则表达式使用括号,能够把前端传来的值接收
url(r'^findAll/$',views.findAll),
]
直接用http://127.0.0.1:8000就能访问到views.py下的index
用http://127.0.0.1:8000就能访问到view.py下的detail
用http://127.0.0.1:8000就能访问到所有Img信息