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

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

猜你喜欢

转载自blog.csdn.net/qq_41637554/article/details/80171271