2. 关于设置static静态文件,样式失效问题
原因: 可能开启多个端口号,页面显示访问的不是已经设置了static的模板,所以,样式没有显示
3. models模型中gender字段的选择设置
choice = [ (1, '男'), (2, '女') ] gender = models.PositiveSmallIntegerField(default=1, choices=choice)
如图,当使用1,2来代替男,女在数据库中的显示,在模型中写法如上,需要注意:数字1,2不加引号,否则在HTML页面使用get_gender_display,则无法显示出你想要的可读性语言,‘男’, ‘女’
4. 当模型层使用CharField, form 正则出错
原因widget 更改input在前端的样式,样式是固定的几种,所以,写正则出错
5. 文件上传 与form表单is_valid()判断问题
当上传相同文件时,需找到上一个上传文件的路径,然后通过路径获取它并删掉,再把当前的文件上传,如下:
ins = Duck.objects.get(pk=1) form = UploadDuckForm(request.POST, request.FILES, instance=ins) file_path = str(ins.photo) # --> ins.photo 获取的是图片文件对象,需转化为字符串 if form.is_valid(): # file_path = str(ins.photo) ---> 错误写法 full_path = settings.MEDIA_ROOT + file_path if os.path.exists(full_path): os.remove(full_path) form.save()
通过instance获取之前的数据,
photo存储上传的图片路径, 如: 20181018/5.jpg
所遇问题:
当进行is_valid()判断表单数据合法后,通过ins.photo获取的路径只有图片名称 ”5.jpg“,并没有上一级的上传时间
原因:
未知,解决措施,如图,查找路径ins.photo放在form.is_valid()之前
6. js , jq 转换问题
原生dom获取,document.getElementById('#a')
jq获取, $('#a')
注意:
jq转换成原生DOM,则通过 $('#a')[0] 更改
然后如果获取元素的id,
如 <tr id="{{ fish.id }}"> 获取id $('#a')[0].id
则需注意,属性是元素dom所有,而jq没有,所以此时就需要上面所提到的相互转换,而jq获取id的值,则可以参考以下写法
$('#a').attr('id')
8. session 学习
session 是一个对象,一直都存在,清除时,只是清除了里面的键与值
- 获取一条数据,没有则设为False
- username = request.session.get('user', False)
- 删除指定数据 del request.session['key']
- 删除所有,键和值一起清空 request.session.flush()
- 删除所有,只清空值 request.session.clear()
- 注意: session中存入的是字符串,所以,如file存储在模型中,取出存入session时,需转化 str(user.photo)
10. 关于ajax
在纯js页面写ajax时,url 地址为显示的路径:如
HTTP://127.0.0.1:8000/。。。
12. a标签
- 行内标签最好不要嵌套块级元素,规定
- 特殊需求时,如点击文章进入页面,此时添加a标签包裹块级元素div时,需要注意,内部不可再添加a标签,否则a标签则为单独出来
13. order_by() 排序
Entry.objects.filter(pub_date__year=2005).order_by('-pub_date', 'headline')
"-pub_date" 前面的负号"-"表示降序排序。默认是采用升序排序。要随机排序,就使用 "?"
14. 不同语言对象获取问题
- 在HTML页面写ajax时,url 采用 django的路由写法, 如
{% url 'news:di_vote' a%}
此时js中 var a = $('.a').html(),来获取a,则出错!
原因:
两者语言不同,获取的不在一个地方,所有无法调用,这种写法是认知错误!!!
{%%} {{ }} 模板里的参数,需要从view视图函数render中返回的才有效
- get请求时,url后面拼参数,需要加上?