在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对应关系里,将视图函数变为元组,按照固定格式去实现