Django(二)配置文件,模型及字段类型
一.Django配置文件
windows:
cd Scripts 执行activate 退出deactivate
linux:
source bin/activate 退出source deactivate
- model.py : 处理数据库
- views.py : 处理业务逻辑
- templates.py : 处理页面显示
- init.py : 初始化, 配置pymysql链接的地方
- settings.py : 配置信息位置, databases等
- urls.py : url路由
- wsgi.py : 网关
二.Django项目操作
注意: 在Django里面的model.py模型定义的时候,最好在模型内部定义一个
:class Meta: db_table = ‘stu’, 里面的stu就会是你执行迁移文件后产生的表名.
- 创建一个新的项目:
django-admin startproject newproject - 配置虚拟环境
virtualenv –no-site-packages env - 配置pycharm的Debug
* 将环境切换到建的虚拟环境
* 配置环境应用在manage.py文件上
* 设置parameters参数: runserver 8000
* apply然后ok, 环境就配好了.
- 在pycharm里面的Terminal终端里面输入命令
python manage.py startapp stu - 在newproject项目里面进行配置:
setting.py:
- INSTALLED_APPS里面加入app名称
- MIDDLEWARE里面注释掉’django.middleware.csrf.CsrfViewMiddleware’, 取消认证
- 在TEMPLATES里面设置’DIRS’: [os.path.join(BASE_DIR, ‘templates’)
- 在DATABASES里面设置好数据库信息.
- 设置LANGUAGE_CODE = ‘zh-hans’
- 设置TIME_ZONE = ‘Asia/Shanghai’
init.py:
- import pymysql
- pymysql.install_as_MYSQLdb()
urls.py:
- 若app里面没有该项,请自行建立, 参照项目中的urls.
- 在项目的urls中加入url(r’^app/’, include(‘myApp.urls’)) 在stu这个app中:
# 文件配置信息:
models.py:
- 在这个文件中定义模型
- 模型对应数据库对应的stu表里面的字段
- 在模型中定义元 class Meta: db_table=’stu’
amdin.py:
- 在这个里面进行注册以后,可以在localhost:8000/admin 里面进行管理数据
- 注册流程:
- from .models import Student
- @admin.register(Student)
- class StudentAdmin(admin.modelAdmin):
- pass/ 或者写一些属性字段
urls.py:
- 这个文件主要是一个url分发,管理
- 导入views.py模块里面的方法
- 在urlpatterns里面加入域名分发
views.py:
- 这个文件和urls.py是交互最紧密的
- 这是业务逻辑模块,例子如下:def addStu(request):
# 添加学生信息
- if request.method == 'GET':
- return render(request, 'index.heml')
- if request.method == 'POST':
- stu_name = request.POST.get('name')
- stu_sex = request.POST.get('sex')
- stu_birth = request.POST.get('birth')
- stu_tel = request.POST.get('tel')
- Student.objects.create(stu_name = stu_name, stu_sex = stu_sex, stu_birth = stu_birth, stu_tel = stu_tel)
- return HttpResponse('添加学生信息成功')
- def selectStu(request):
查询数据
- stus = Student.objects.all()
- stus = Student.objects.filter(stu_sex = 0)
- stus = Student.objects.get(stu_sex =0) , 注意: 这种方法仅能取条件唯一的唯一一条数据, 且条件苛刻, 巨坑无比, 推荐使用filter
- 查询id从大到小排序
- stus = Student.objects.all().order_by('id')
- 获取id最小的一条数据
- stus = Student.objects.all().order_by('-id').first()
- 获取id最大的一条数据
- stus = Student.objects.all().order_by('-id').last()
- 获取男生的人数数据
- stus = Student.objects.filter(stu_sex=True).count(), 得到的就stus就是男生的人数
- 查询所有80后女生的信息
- stus = Student.objects.filter(stu_sex=False, stu_birth__gte='1980-1-1', stu_birth__lt='1990-1-1')
- 查询语文成绩比数学成绩好的学生
- stus = Student.objects.filter(stu_yuwen__gte=F('stu_shuxue')) ,注意在这种比较两个变量之间的关系的时候,必须引入F()模块进行比较.
- 查询语文成绩超过数学成绩10分以上的学生
- stus = Student.objects.filter(stu_yuwen__gte=F('stu_shuxue') + 10 )
- 查询学生姓名不叫王昭君的,或者语文成绩大于80分的学生
- 注意: ~ 代表取反, 在查询或者语句的时候必须引入Q()模块进行查询, 具体引入过程为: from django.db.models import F, Q
- stus = Student.objects.filter(~Q(stu_name='王昭君') | Q(stu_yuwen__gt=80))
- 查询姓李的数据
- stus = Student.objects.filter(stu_name__startswith='貂')
- 查询以华字结尾的数据
- stus = Student.objects.filter(stu_name__endswith='华')
- 查询是否有张三这个人
- stus = Student.objects.filter(stu_name='小乔').exists()
- 如果存在,stus=True, 否则, stus=False
- 查询名字中包含马的数据
- stus = Student.objects.filter(stu_name__contains='马')
- 获取多个指定id的数据
- ids = [1, 2, 5]
- stus = Student.objects.filter(id__in=ids)
- 将以上查询的数据返回给前端界面
- return render(request, 'sel_stu.html', {'stus': stus})
Django字段与admin后台超级管理员
- 创建超级管理员用户
- python manage.py createsuperuser
- 模型字段:
- CharField(): 字符串字段
- BooleanFiled(): 布尔类型字段
- DatetimeField(): 日期类型, 年月日时分秒
- DateField(): 日期类型,年月日字段
* 参数:
* auto\_now\_add: 第一次创建时候的赋值
* auto\_now: 每次修改的时候赋值
* AutoField: 自动增长
* DecimalField(max\_digits=3, decimal\_places=1):
* TextField : 存文本信息
* IntegerField: 存整数
* FloatField: 存浮点
* FileField: 文件上传字段
* ImageField(upload\_to = ):指定路径上传图片
还没有评论,来说两句吧...