zoukankan      html  css  js  c++  java
  • 关于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>

  • 相关阅读:
    js对象数组(JSON) 根据某个共同字段 分组
    一个 函数 用来转化esSearch 的range 条件
    关于 vuex 报错 Do not mutate vuex store state outside mutation handlers.
    android listview 重用view导致的选择混乱问题
    android SDK和ADT的更新
    Android中adb push和adb install的使用区别
    pycharm中添加扩展工具pylint
    su Authentication failure解决
    Putty以及adb网络调试
    有关android源码编译的几个问题
  • 原文地址:https://www.cnblogs.com/xiaoluoboer/p/8328674.html
Copyright © 2011-2022 走看看