zoukankan      html  css  js  c++  java
  • Django一些常用参数的设置

    在form表单里面   autocomplete="off"  浏览器输入框关闭自动提示

    在ajax里面要发送文件数据需要实例化一个FormData()对象,

    还需要设置

    processData:false,     //告诉jQuery不要处理我的数据

    contentType:false,      //告诉jQuery不要设置content类型

    实现示例代码:

     1   //用户点击注册触发ajax
     2     $("#reg-btn").click(function () {
     3         //获取用户填写的注册数据,向后端发送ajax请求
     4         //发送文件数据时必须 用FormData()的对象
     5         var formData=new FormData();
     6         formData.append('username',$("#id_username").val());
     7         formData.append('password',$("#id_password").val());
     8         formData.append('re_password',$("#id_re_password").val());
     9         formData.append('email',$("#id_email").val());
    10         formData.append('profile',$("#id_profile")[0].files[0]);
    11         formData.append('csrfmiddlewaretoken',$("[name='csrfmiddlewaretoken']").val());
    12         $.ajax({
    13             url:'/register/',
    14             type:'post',
    15             processData:false,  //告诉jQuery不要处理我的数据
    16             contentType:false,  //告诉jQuery不要设置content类型
    17             data:formData,
    18             success:function (data) {
    19                 if(data.status){    //如果status有值 登录失败 显示错误信息
    20                     $.each(data.msg,function (k,v) {
    21                        //遍历获取错误信息,并按id设置span标签的内容
    22                         $('#id_'+k).next('span').text(v[0]).parent().parent().addClass('has-error');
    23                     })
    24                 }
    25                 else {
    26                     location.href=data.msg;  //如果没有错误就跳转到指定页面
    27                 }
    28             }
    29         })
    30     });

     如果想打印orm转换过程中的sql,需要在settings中进行如下配置:

     1 LOGGING = {
     2     'version': 1,
     3     'disable_existing_loggers': False,
     4     'handlers': {
     5         'console':{
     6             'level':'DEBUG',
     7             'class':'logging.StreamHandler',
     8         },
     9     },
    10     'loggers': {
    11         'django.db.backends': {
    12             'handlers': ['console'],
    13             'propagate': True,
    14             'level':'DEBUG',
    15         },
    16     }
    17 }  

     Django框架的admin后台页面如果想要实现汉化需要设置的参数:

    在setting文件里面配置:

    1 LANGUAGE_CODE = 'zh-hans'

    能实现普通管理页面效果汉化,但是如果要使数据库类或者对象属性也实现汉化:

     1 class AuthorDetail(models.Model):
     2 
     3     nid = models.AutoField(primary_key=True)
     4     birthday=models.DateField(verbose_name="生日")
     5     telephone=models.BigIntegerField(verbose_name="手机")
     6     addr=models.CharField( max_length=64,verbose_name="地址")
     7 
     8     class Meta:
     9         verbose_name = "作者信息"
    10         verbose_name_plural = verbose_name
    11 
    12     def __str__(self):
    13         return '{}-{}'.format(self.pk,self.telephone)

    完成上述几部参数设置后,就完全汉化可用了

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    django后台管理页面如果想修改自定义字段:

    可以在admin文件里面配置

     1 from django.utils.safestring import mark_safe  #让Django不要转移字符
     2 class BookConfig(admin.ModelAdmin):
     3     def del_book(self):
     4         return mark_safe("<a href=''>删除</a>")   #返回的结果作为字段给 list_display使用  mark_safe让django别转义字符串
     5     list_display = ["pk","title","publishDate","price","publish",del_book]   #需要显示的对象属性
     6     list_display_links =["title"]                   #把哪个标签设置为链接入口
     7     list_filter = ["publish","authors"]             #按照规定字段筛选过滤
     8     search_fields = ["title","price","publish__name"]     #这里面的字段也是可以跨表找字段的  按照规定字段模糊匹配检索
     9 
    10     def change_price(self,request,queryset):     #自定义批处理函数
    11         queryset.update(price=88)                 #更新价格为88
    12     change_price.short_description = "价格批量初始化"
    13     actions = [change_price,]                 #添加到actions里面去
    14 
    15 admin.site.register(Book,BookConfig)

     Admin的实现流程:

    1.启动admin 在程序启动后会扫描对应的方法,去执行加载

    1 def autodiscover():
    2     autodiscover_modules('admin', register_to=site)

     所谓聚合函数:就是在不分组的情况下进行统计

    ORM

    关键点:1.queryset对象.annotate

        2.annotate进行分组统计 按照select (相当于values)的字段进行group by

        3.annotate返回值依旧是queryset对象,增加了分组统计之后的键值对

    2.在admin文件里面注册模块对象

     

     1 class AuthorConfig(admin.ModelAdmin):
     2     def author_del(self,obj):
     3         return mark_safe("<a href=''>删除</a>")
     4 
     5     list_display = ["pk","name","age","authorDetail","author_del"]
     6     list_display_links = ["name"]
     7     list_filter = ["age"]
     8 
     9 
    10 admin.site.register(Author,AuthorConfig)
    11 admin.site.register(AuthorDetail)
    12 
    13 class BookConfig(admin.ModelAdmin):
    14     def del_book(self):
    15         return mark_safe("<a href=''>删除</a>")   #返回的结果作为字段给 list_display使用  mark_safe让django别转义字符串
    16     list_display = ["pk","title","publishDate","price","publish",del_book]   #需要显示的对象属性
    17     list_display_links =["title"]                   #把哪个标签设置为链接入口
    18     list_filter = ["publish","authors"]             #按照规定字段筛选过滤
    19     search_fields = ["title","price","publish__name"]     #这里面的字段也是可以跨表找字段的  按照规定字段模糊匹配检索
    20 
    21     def change_price(self,request,queryset):     #自定义批处理函数
    22         queryset.update(price=88)                 #更新价格为88
    23     change_price.short_description = "价格批量初始化"
    24     actions = [change_price,]                 #添加到actions里面去
    25 
    26 admin.site.register(Book,BookConfig)
    27 admin.site.register(Publish)

     

    3.分配urls路径地址,在urls文件里面完成对应关系:

    有一级分配与二级分配:

     1 from django.conf.urls import url
     2 from django.contrib import admin
     3 from apk import views
     4 from django.shortcuts import HttpResponse
     5 def test1(request):
     6     return HttpResponse("test1")
     7 
     8 def add_list(request):
     9     return HttpResponse("add_test1")
    10 
    11 def del_list(request,id):
    12     print(id)
    13     return HttpResponse("del_test1")
    14 
    15 def change(request,id):
    16     return HttpResponse("change_test1")
    17 
    18 def show_list(request):
    19     return HttpResponse("show_test1")
    20 
    21 def functions():
    22     fun_list=[]
    23     fun_list.append(url(r'^$',show_list))
    24     fun_list.append(url(r'^add/$', add_list))
    25     fun_list.append(url(r'^(d+)/del/$', del_list))
    26     fun_list.append(url(r'^(d+)/change/$',change))
    27     return fun_list
    28 
    29 def get_urls():
    30     print(admin.site._registry)
    31     temp=[]
    32 
    33     for model,admin_class_obj in admin.site._registry.items(): #对注册的组件键与值进行迭代,得到类对象和实例对象
    34         app_name=model._meta.app_label      #app名字
    35         model_name=model._meta.model_name   #模型对应名字
    36         temp.append(url(r'^{0}/{1}/'.format(app_name,model_name),(functions(),None,None)),)
    37 
    38     return temp
    39 urlpatterns = [
    40     url(r'^admin/', admin.site.urls),
    41 
    42     url(r'^index/',views.show),
    43 
    44     url(r'^kevin/',(get_urls(),None,None)),
    45 ]

     在url对应关系里,将视图函数变为元组,按照固定格式去实现

  • 相关阅读:
    python的几个实例程序员节日快乐
    用python的time库写一个进度条
    用python绘画一些简单图片
    头文件板子
    Codeforces 606-C:Sorting Railway Cars(LIS)
    中南林业科技大学第十一届程序设计大赛- I:背包问题
    离散数学:用C语言来判断集合存在的二元关系
    中南林业科技大学第十一届程序设计大赛-C:有趣的二进制
    POJ 1611:The Suspects(并查集)
    POJ 2236:Wireless Network(并查集)
  • 原文地址:https://www.cnblogs.com/wen-kang/p/9655316.html
Copyright © 2011-2022 走看看