Django是什么?
以下是来自官网的介绍。官网地址:www.djangoproject.com/
Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. Built by experienced developers, it takes care of much of the hassle of web development, so you can focus on writing your app without needing to reinvent the wheel. It’s free and open source.
Django 是一个高级 Python Web 框架,鼓励快速开发和简洁、实用的设计。它由经验丰富的开发人员构建,可以解决 Web 开发的大部分麻烦,因此您可以专注于编写应用程序,而无需重新发明轮子。它是免费和开源的。
Django现在已经出到5.1.2版本了,我这篇写的时候还只有4,那会儿大部分教程还说2.2版本是较为稳定的,现在应该也算稳定,毕竟都不维护了嘛(。)但还是能用的,所以搬过来。
搭建流程实际上在官方文档里都有写了,这里整理一下简要流程。
官方文档地址: Django文档 编写你的第一个 Django 应用,第 1 部分
安装django
pip install django==2.2
建议: 以下命令行操作在新建的空白目录下进行更方便,cmd或shell所用命令均相同
1、创建项目
这一步会在当前所处目录下新建一个projectName的文件夹,并在其下创建一个同名文件夹,其中包含settings.py、urls.py、wsgi.py等项目相关文件。
django-admin startproject projectName
2、创建应用
这一步会在项目文件夹下创建一个appName文件夹,包含admin.py、apps.py、tests.py、views.py、models.py等文件。分别用于管理(admin和apps)、测试(tests)、视图(views)、对象模型/表(models)的代码编写。
cd projectName
django-admin startapp appName
执行后,打开projectName/settings.py文件,找到INSTALLED_APPS所在位置,在其后的中括号里加上'appName.apps.appNameConfig',,保存。如下:
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"appName.apps.appNameConfig",
]
在生成的models.py可以写所需的class模型,若想避免多个模型放在一个文件里不易查看编写,也可以将models.py删除,新建models文件夹,并在其下新建__init__.py后写上from .ClassName import ClassName。
# models __init__.py
from .ClassName import ClassName
3、编写模型
django提供了丰富多彩的字段类型,可以在Django-模型字段参考中查看对照
文档仅被汉化很少的部分,建议直接右侧目录查看大概后再挑选进去查看
在实际使用中只用到比较常见的几种类型,这里记一些示例写法
import django.db import models
import django.utils.timezone as timezone
class ClassName(models.Model):
className = models.Manager()
columnName = models.CharField('字段名',max_length=200)
columnName2 = models.CharField(max_lengt=100,db_index=True) # 加索引
columnName3 = models.CharField(max_length=20,default='localhost')
columnName4 = models.CharField(max_length=20,blank=True)# 是否允许空白
columnName5 = models.IntegerField()
columnName6 = models.BooleanField('字段名6',default=False)
columnName7 = models.DateTimeField('操作时间',auto_now=timezone.now)
columnName8 = models.TextField()
def __str__(self):
return self.columnName
def myDefineFunction(self): # 自行编写的自定义方法
return ''
写完后,回到cmd或者shell的窗口里,执行以下命令:
python manage.py migrate
python manage.py makemigrations
日后若对模型有字段增删修改,或新增模型,在修改完
models.py或对应models\model.py文件后同样执行以上两步操作即可
4、把模型表加到后台管理
如果缺少这一步,后面使用python manage.py runserver 0.0.0.0:8080启动项目后,无法在localhost:8080/admin中查看自己新建的表。
编辑app\admin.py文件,加入以下内容保存
# 如果是全部写在models.py文件里的用这一句
from .models import ClassName
# 如果是单独models文件夹的用这一句
import .models.ClassName import ClassName
# 一个模型写一句
admin.site.register(ClassName)
# 以上内容加入后后台表不会有查询框提供,故可用以下配置
class ClassNameAdmin(admin.ModelAdmin):
search_fields=('columnName','columnName1','columnName2','columnName3')
list_display = ('columnName','columnName1','columnName2','columnName3')
admin.site.register(ClassName,ClassNameAdmin)
# 如果要使原生英文的后台标题展示为中文,可以修改站点别名
admin.site.site_header = '管理后台'
admin.site.site_title = '后台'
admin.site.index_title = '我的管理后台'
5、运行项目
python manage.py runserver 0.0.0.0:8080