Django(三) 表关联,页面for循环,,GET前端到后端参数传递, 处理404等错误

  1. 关联

    1:1 OneToOneField : 主键和外键是一堆的关系, 在关联表中, 只能关联一个主表的id

    拓展表找主表: 拓展信息对象, 关联字段
    主表找拓展表的信息: 主表对象. 关联表的model

    1:N
    M:N

  2. on_delete

    默认cascade, 主表删除, 从表也删除
    set_null, 主表删除, 从表关联字段设为空
    protect, 不让删除
    set_default, 主表删除, 从表关联字段设置为默认值

  3. 静态资源加载

    1) static/images/xxx.png
    2) {% load static %}

  4. for

    {% for i in stu %}
    {% empty %}
    {% endfor %}

  5. if

    {% if xxx %}
    {% endif %}

  6. ifequal

    {% ifequal xxx 1 %}
    {% else %}
    {% endifequal %}

  7. forloop

    forloop.counter
    计数从0开始:{{ forloop.counter0 }}
    计数从1开始:{{ forloop.counter }}
    计数从最后开始,到1停:{{ forloop.revcounter }}
    计数从最后开始,到0停:{{ forloop.revcounter0 }}

  8. 过滤器

    在变量显示前修改
    语文成绩: {{ stu:s_yuwen | add:10 }}
    add 加法,增加值

    生日: {{ stu.stu_birth | date:’y-m-d’ }}
    date: 日期显示方式

    数学成绩: {% if stu.stu_shuxue | divisibleby:2 %}

    name: {{stu.stu_name}}

    —>加上h3标签
    {% else %}
    name: {{stu.stu_name}} —>正常显示
    {% endif %}
    divisibleby:2 : 能整除2,返回True, 否则False

  9. 权限设计(习题)

    用户表user
    u_name, u_sex, u_birth, u_operate_time, u_create_time

    角色表role
    r_name, 管理员,会员,超级VIP

    角色role和权限permission
    r_id
    p_id

    权限表 permission
    p_name
    具体权限名有,登录权限,查询用户列表信息权限,修改用户信息权限

    1) 查询某某用户具备那些权限
    2)判断某一个用户是否有某一个权限

  10. html页面挖坑,填坑操作

    • 建立base.html:
      这里写图片描述

    • 建立index1.html:

这里写图片描述

  • 建立index2.html

    {% extends ‘base.html’ %}

    {% block title %}
    我也能继承
    {% endblock %}

    {% block contain %}
    我最帅–>我能继承好多
    {% endblock %}

  • 里面用的全是jinja2语言
  • 设计Get请, 通过标签传递参数
    – {% for g in grades %}
    班级id : {{ g.id }}

    班级名称: {{ g.g_name }}


    – {% endfor %}

    def addStu(request):
    if request.method == ‘GET’:
    return render(request, ‘addStu.html’)
    if request.method == ‘POST’:
    # 跳转到添加学生详情页面
    name = request.POST.get(‘name’)
    tel = request.POST.get(‘tel’)
    stu = Student.objects.create(
    s_name = name,
    s_tel = tel
    )
    # 以下为传参数
    return HttpResponseRedirect(reverse( r’s:addinfo’, kwargs={‘stu_id’: stu.id}))
    def addStuInfo(request, stu_id):
    if request.method == ‘GET’:
    return render(request, ‘addStuInfo.html’, {‘stu_id’: stu_id})
    if request.method == ‘POST’:
    stu_id = request.POST.get(‘stu_id’)
    addr = request.POST.get(‘addr’)
    StudentInfo.objects.create(
    s_id = stu_id,
    i_addr = addr
    )
    return HttpResponseRedirect(‘/stu/index/’)

  • 以上代码以后在 url.py里面设置:

    urlpatterns = [
    url(r’^allstu/(?P\d+)/’, views.allStu)
    ]
    可以通过这个设置,将g_id这个变量的值取到方法request的后面
    如:
    def allStu(request, g_id):
    balababala –> 你就可以在这边进行调用g_id了

  • 指定参数传递
    这里写图片描述
    这里写图片描述

– 外键(ForeignKey)和models.OneToOneField:

u = models.OneToOneField(Users)
以上为: 一对一
s = models.ForeignKey(Users, unique=True)
外键其实是一对多, 添加unique以后, 就是一对一了

– 处理404错误和500错误
- 如果要处理这类错误, 需要在setting.py 里面将 DEBUG = False, 下面的访问权限里面加入 [‘*’]
- 具体操作流程如下:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值