• 关于urls 的基础


    1 普通正则

    2 分组正则  

    url(r'/blog/(d+)/(d+)',views.blog)     blog(request,arq1,arq2) 按照位置传参

    3 分组命名

    url(r'/blog/(?P<year>d+)/(?P<month>d+)',views.blog)     blog(request,year,month)

    4  用name 指定别名

    url(r'/blog/(?P<year>d+)/(?P<month>d+)',views.blog,name ='blog')     blog(request,year,month

    涉及到了反向解析URL

    4-1 在html里面:{%  url 'blog' 2012 12%}

    4-2from django.urls import reverse reverse ('blog',arg=(2013,11))

    5 用namespace 指定命名空间
    url(r'/app01/',inclue(app01.urls,namespace='app01))
    涉及到了反向解析URL
    5-1 HTML 里面{% url 'app01:blog' 2012 11%}
    5-22 在views reverse('app01:blog' ,arg=(2010,33))

     --------------

    通过get取值 和通关过分组取值的用法和对比

      url(r'^edit_class_list/(d+)/', views.edit_class_list, name='editclasslist'),
    
    def edit_class_list(request,arg):
        # 这里是通过分组取值的方法得到arg,点击编辑的时候生成url 和id的值 id的值就是arg
        if request.method == 'POST':
           e_id = request.POST.get("class_id")
           e_name1 = request.POST.get('class_name')
           first1_day = request.POST.get('first_day')
           models.Ban_list.objects.filter(id=e_id).update(cname=e_name1,first_day=first1_day)
           return redirect(reverse('app0001urls:classlist'))
           # 通过编辑的链接取值arg
    
        e_name = models.Ban_list.objects.get(id=arg)
        return render(request,'edit_class_list.html',{'e_name1':e_name})
    
    
    {#这里的form 表单里因为url 那里已经分组 必须是两个参数组成的url action 必须是两部分e_name1.id 就是那个d+#}
    <form action="{% url 'app0001urls:editclasslist' e_name1.id %}"  method="post" >
        {% csrf_token %}
    {#    id这里必须要有id的值为什么  因为POST 通过id的name 取值 他的值就是现在的value#}
        <input type="text" name="class_id" value="{{ e_name1.id }}" style="display: none">
        班级名称<input type="text" name="class_name" value='{{ e_name1.cname }}'>
    {#    时间的类型注意#}
        开班时间<input type="date" name="first_day" value='{{ e_name1.first_day|date:'Y-m-d'}}'>
        <input type="submit" value="提交">
        <a href="/app0001/class_list/">取消</a>
    </form>
    
    get 取值
     <td>
             <a href="/app0001/edit_student_list/?student_id={{ student.id }}" style="color:blue ; text-decoration: none">编辑</a>
            <a href="/app0001/delete_student_list/?student_id={{ student.id }}" style="color:blue ; text-decoration: none">删除</a>
        </td>
    

     

    1 HTML 里面{% url 'app01:blog' 2012 11%}
    2 在views reverse('app01:blog' ,arg=(2010,33))

    要在Django Console 打印出有sq语句 在django 项目的配置信息中加上这个日志 而且引用

    import loggong
    LOGGING = {
    'version': 1, # 目前为止有且只有这一个值
    'disable_existing_loggers': False, # 不禁用已经存在的logger实例
    # 定义一些日志的处理方式
    'handlers': {
    'console': {
    'level':'DEBUG', # handle的日志级别
    'class':'logging.StreamHandler',
    },
    },
    'loggers': {
    'django.db.backends': {
    'handlers': ['console'],
    'propagate': True, # 向上传导
    'level':'DEBUG', # logger实例的日志级别
    },
    }
    }

    models 中插入这句在定义的类的下面的缩进行里 这样打印出来的结果对象就会是实际的内容
      def __str__(self):
        return '{}{}'.format(self.cname,self.first_day)
    单表查询的增删改查
    单表查询的API 介绍 共13条
    1 返回QuerySet对象的有8条
    1 all():全部 2 filter():过滤 3 exclude():不包括
    4 value()值 5value_list() 值的列表 6 order_by() 排序正序
    7 reverse() 反转 8 distinct() 去重


    models.Ban_list.objects.filter(id=7)
    <QuerySet [<Ban_list: Linux 1212期2015-01-29>]>
    (0.002) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7 LIMIT 21; args=(7,)
    (0.000) SELECT VERSION(); args=None
    (0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7 LIMIT 21; args=(7,)

    from app0001 import models
    models.Ban_list.objects.all(){这里是没有加入上边的返回的内容的}
    (0.000) SELECT @@SQL_AUTO_IS_NULL; args=None
    <QuerySet [<Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>, <Ban_list: Ban_list object>]>
    (0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
    (0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
    (0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
    
    models.Ban_list.objects.all(){这里是加入上边的返回的内容的}
    (0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
    <QuerySet [<Ban_list: Python 18期2023-10-19>, <Ban_list: Linux 1212期2015-01-29>, <Ban_list: 大数据1班2020-12-01>, <Ban_list: Python 11期2012-09-01>, <Ban_list: Linux 4期2019-12-23>, <Ban_list: Python 19期2016-10-19>, <Ban_list: 大数据2班2017-10-28>]>
    (0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
    (0.001) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` LIMIT 21; args=()
    .all()

    2返回数字的: 1 count():计数行数
    3返回布尔值的:1exists():是否存在
    4 返回的是对象的:1 get() 得到的是一个对象 2 first():第一个对象 3 last() :最后一个对象

    models.Ban_list.objects.get(id=7)
    (0.001) SELECT @@SQL_AUTO_IS_NULL; args=None
    (0.001) SELECT VERSION(); args=None
    (0.002) SELECT `app0001_ban_list`.`id`, `app0001_ban_list`.`cname`, `app0001_ban_list`.`first_day` FROM `app0001_ban_list` WHERE `app0001_ban_list`.`id` = 7; args=(7,)
    <Ban_list: Linux 1212期2015-01-29>

  • 相关阅读:
    LVM
    linux在线添加硬盘、扫盘
    django 的用户认证组件
    django组件-cookie与session
    django组件 分页器
    Django 与 Ajax
    Djange 模型层2
    Django 模型层
    Djange 的模板层
    Django的视图层
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/8328674.html
Copyright © 2020-2023  润新知