Django(二)配置文件,模型及字段类型

清疚 2022-05-26 12:44 265阅读 0赞

一.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就会是你执行迁移文件后产生的表名.

  1. 创建一个新的项目:
    django-admin startproject newproject
  2. 配置虚拟环境
    virtualenv –no-site-packages env
  3. 配置pycharm的Debug
  1. * 将环境切换到建的虚拟环境
  2. * 配置环境应用在manage.py文件上
  3. * 设置parameters参数: runserver 8000
  4. * apply然后ok, 环境就配好了.
  1. 在pycharm里面的Terminal终端里面输入命令
    python manage.py startapp stu
  2. 在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’))
  3. 在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):

      1. # 添加学生信息
      2. - if request.method == 'GET':
      3. - return render(request, 'index.heml')
      4. - if request.method == 'POST':
      5. - stu_name = request.POST.get('name')
      6. - stu_sex = request.POST.get('sex')
      7. - stu_birth = request.POST.get('birth')
      8. - stu_tel = request.POST.get('tel')
      9. - Student.objects.create(stu_name = stu_name, stu_sex = stu_sex, stu_birth = stu_birth, stu_tel = stu_tel)
      10. - return HttpResponse('添加学生信息成功')
      11. - def selectStu(request):
    • 查询数据

      1. - stus = Student.objects.all()
      2. - stus = Student.objects.filter(stu_sex = 0)
      3. - stus = Student.objects.get(stu_sex =0) , 注意: 这种方法仅能取条件唯一的唯一一条数据, 且条件苛刻, 巨坑无比, 推荐使用filter
      4. - 查询id从大到小排序
      5. - stus = Student.objects.all().order_by('id')
      6. - 获取id最小的一条数据
      7. - stus = Student.objects.all().order_by('-id').first()
      8. - 获取id最大的一条数据
      9. - stus = Student.objects.all().order_by('-id').last()
      10. - 获取男生的人数数据
      11. - stus = Student.objects.filter(stu_sex=True).count(), 得到的就stus就是男生的人数
      12. - 查询所有80后女生的信息
      13. - stus = Student.objects.filter(stu_sex=False, stu_birth__gte='1980-1-1', stu_birth__lt='1990-1-1')
      14. - 查询语文成绩比数学成绩好的学生
      15. - stus = Student.objects.filter(stu_yuwen__gte=F('stu_shuxue')) ,注意在这种比较两个变量之间的关系的时候,必须引入F()模块进行比较.
      16. - 查询语文成绩超过数学成绩10分以上的学生
      17. - stus = Student.objects.filter(stu_yuwen__gte=F('stu_shuxue') + 10 )
      18. - 查询学生姓名不叫王昭君的,或者语文成绩大于80分的学生
      19. - 注意: ~ 代表取反, 在查询或者语句的时候必须引入Q()模块进行查询, 具体引入过程为: from django.db.models import F, Q
      20. - stus = Student.objects.filter(~Q(stu_name='王昭君') | Q(stu_yuwen__gt=80))
      21. - 查询姓李的数据
      22. - stus = Student.objects.filter(stu_name__startswith='貂')
      23. - 查询以华字结尾的数据
      24. - stus = Student.objects.filter(stu_name__endswith='华')
      25. - 查询是否有张三这个人
      26. - stus = Student.objects.filter(stu_name='小乔').exists()
      27. - 如果存在,stus=True, 否则, stus=False
      28. - 查询名字中包含马的数据
      29. - stus = Student.objects.filter(stu_name__contains='马')
      30. - 获取多个指定id的数据
      31. - ids = [1, 2, 5]
      32. - stus = Student.objects.filter(id__in=ids)
      33. - 将以上查询的数据返回给前端界面
      34. - return render(request, 'sel_stu.html', {'stus': stus})
  4. Django字段与admin后台超级管理员

    • 创建超级管理员用户
    • python manage.py createsuperuser
    • 模型字段:
    • CharField(): 字符串字段
    • BooleanFiled(): 布尔类型字段
    • DatetimeField(): 日期类型, 年月日时分秒
    • DateField(): 日期类型,年月日字段
  1. * 参数:
  2. * auto\_now\_add: 第一次创建时候的赋值
  3. * auto\_now: 每次修改的时候赋值
  4. * AutoField: 自动增长
  5. * DecimalField(max\_digits=3, decimal\_places=1):
  6. * TextField : 存文本信息
  7. * IntegerField: 存整数
  8. * FloatField: 存浮点
  9. * FileField: 文件上传字段
  10. * ImageField(upload\_to = ):指定路径上传图片

发表评论

表情:
评论列表 (有 0 条评论,265人围观)

还没有评论,来说两句吧...

相关阅读