在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对应关系里,将视图函数变为元组,按照固定格式去实现
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django一些常用参数的设置 - Python技术站