1、html5中使用if…else…
<!-- if...else... -->
{% if submited_peo != "全部" %}
<option>全部</option>
{% endif %}
<!--搭配for循环使用-->
{% for name in input_names %}
{% if name.input_name != submited_peo %}
<option>{{name.input_name}}</option>
{% endif %}
{% endfor %}
1-2、提交表单,不改变下拉框已选项
点击提交表单后,html重载,导致下拉框内容重置。我想到的解决方法是将上一次的选择的内容使用变量存储下来,然后在页面加载之前赋予到下拉框的最上层。
自己写了一个判断来解决:
view.py中:
使用变量来接收并存储下拉框的内容:
#添加初始值为:
#(注:如果包含跳转,那跳转前的页面也要加这段增添初始值,否则跳转后submited_item会是空白)
submited_item = "全部"
#因为select_item在下面的数据处理中用到了,所以就用submited_item来存储上一次选择的值
select_item = request.POST.get("select_item", None)
submited_item = select_item
html中:
<label style="float:left;margin-top:9px;margin-left:10px">选择提交人:</label>
<select id="select1" class="form-control" name="select_duty" style="width:64%;margin-left: 25px;">
<option>{{submited_peo}}</option>
{% if submited_peo != "全部" %}
<option>全部</option>
{% endif %}
{% for name in input_names %}
{% if name.input_name != submited_peo %}
<option>{{name.input_name}}</option>
{% endif %}
{% endfor %}
</select>
成功解决!
开始时:
选择并提交表单后:
2、数据库表增删改查
查找:
# submit_items返回createitem表中所有duty_peo属性值为jcy的数据
# submit_items[0].item_name表示返回的第一条数据的item_name属性的值
submit_items = models.CreateItem.objects.filter(duty_peo='jcy')
print(submit_items[0].item_name)
# 用法类似,其中get仅适用于返回一条数据的情况,返回两条数据或不返回都会报错
submit_items = models.CreateItem.objects.get(duty_peo='jcy')
print(submit_items.item_name)
插入记录:
#一一对应,每一个属性都要有对应的值
models.CreateItem.objects.create(item_name=item_name, duty_peo=duty_peo, total_date=last_date
, participate_member=participate_member
, create_date_time=create_date_time).save()
删除记录:
# 删除Users表中username属性为jcy的所有数据
models.Users.objects.filter(username='jcy').delete()
修改记录:
# 修改CreateItem中所有数据的datetime属性为2019-11-02
models.CreateItem.objects.all().update(datetime='2019-11-02')
# 修改Users表中username为jcy的数据password属性为123123
models.Users.objects.filter(username='jcy').update(password='123123')
3、外键的使用
这段代码来自哪里找不到了,由于我的表结构中没有使用到外键所以先放在这里:
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=100)
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
# on_delete=models.CASCADE表示级联删除,
# 当删除主表的数据时候从表中的数据也随着一起删除,不加会报错。
category = models.ForeignKey('Category',on_delete=models.CASCADE)
4、css实现圆角效果
border-radius
:用这个属性能实现圆角边框的效果。现在只有Mozilla/Firefox 和 Safari 3支持该属性。
-webkit-border-radius
:苹果;谷歌,等一些浏览器认,因为他们都用的是webkit内核;
-moz-border-radius
:moz这个属性 主要是专门支持Mozilla Firefox 火狐浏览器的CSS属性。
使用时:
<div style="background-color:#ccc;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border:1px solid #000;
padding:10px;"
>
变圆后的边角:
border-radius;
使用时border-radius: 5px 5px 5px 5px;
四个像素值分别对应四角
5、数据库查询结果倒序显示
使用order_by:
这是顺序:
submited_items = models.SubmitItem.objects.order_by("submit_date")
这是倒序:
submited_items = models.SubmitItem.objects.order_by("-submit_date")
使用时:
<div style="overflow: auto;">
<ul class="list-group" >
{% for sub_items in submited_items %}
<li class="list-group-item list-group-item-success" style="height:35px;">
{{sub_items.submit_date|date:"Y-m-d H:i:s"}} {{sub_items.submit_peo}} 更新了 {{sub_items.item_name}}
</li>
{% endfor %}
</ul>
</div>
查询时:
submit_items = models.SubmitItem.objects.filter(submit_date__startswith=select_date,
item_name__startswith=select_item,
submit_peo__startswith=submit_peo).order_by("-submit_date")
6、javascript控制date日期选择框显示日期
//id与date选择框的id保持一致
//显示当前日期
document.getElementById('select_date1').valueAsDate = new Date();
//显示固定日期(使用 - 连接正常显示,使用 / 连接挥往前推一天)
document.getElementById('select_date1').valueAsDate = new Date('2019-11-12');
7、javascrip使用django中的参数
比如:
view.py中定义参数:
selected_date = "2019-03-12"
在html中搭配javascript使用:
var selected_date = "{{selected_date}}";
document.getElementById('select_date1').valueAsDate = new Date(selected_date);
执行结果:
7-2、日期输入框的动态变化
那么想要日期输入框也不跟着表单提交一起重置,就可以这样实现了:
html中:
//javascript中添加日期输入框的动态显示
var selected_date = "{{selected_date}}"; //django中的参数名
document.getElementById('select_date1').valueAsDate = new Date(selected_date); //绑定控件
那么日期选择框显示的日期就和Django中的变量selected_date
绑定在一起了,接下来只需要考虑怎么处理django中的这个变量了。
view.py中:
首先添加变量并赋予初值:(跳转入口也要赋值,否则跳转以后为空)
# 表示当第一次加载没有选择日期的时候,默认显示当前的日期
# 尝试过直接用datetime.now().date(),但是javascript无法识别,转为字符串后显示正常
selected_date = str(datetime.now().date())
接着将上一次读取到的选择的日期赋予它:
# 注意这里是使用组件的name获取,而javascript中使用的是id,所以获取的名称不同,不要认错了
# select_date下面要进行处理,所以还是用selected_date来接收
select_date = request.POST.get("select_date", None)
selected_date = select_date
接着就实现了,即使表单页面提交或者刷新了,日期选择框也不会重置改变。