目录
对我所使用到的django与数据库以及前端交互的手法进行一下总结:
models.py文件在views.py文件中的使用
首先时与数据库的交互:
已知,数据库代码可以使用django中的orm框架去完成,定义在models.py文件之中:
from django.db import models
class User(models.Model):
#用户id 身份证号 用户名 密码 公司id
userid = models.CharField(db_column='UserId', primary_key=True, max_length=4) # Field name made lowercase.
id = models.CharField(db_column='ID', unique=True, max_length=18, blank=True, null=True) # Field name made lowercase.
username = models.CharField(db_column='UserName', max_length=20, blank=True, null=True) # Field name made lowercase.
password = models.CharField(db_column='Password', max_length=50, blank=True, null=True) # Field name made lowercase.
companyid = models.ForeignKey(Company, models.DO_NOTHING, db_column='CompanyId', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'user'
然后通过Terminal执行相应代码就可以看到在数据库中创建了有关的表(上一个文档有提到,不再赘述)。
如果我们在编写后端代码时需要使用到数据库的有关内容,就可以通过models.py直接调用:
在views.py中添加下述代码:
from app01.models import *
使用很简单,只需上次介绍的函数即可:
#假如有一个学生表,接下来对这个表进行查询:
#查询学生表中的所有数据,并返回查询集的QuerySet结果集
stus=Student.objects.all()
#查询年龄等于15的学生,并返回查询集的QuerySet结果集
stus=Student.objects.filter(s_age=15)
#查询年龄不等于15的学生,并返回查询集的QuerySet结果集
stus=Student.objects.exclude(s_age=15)
#查询年龄等于15的学生,并返回查询集的QuerySet结果集
stus=Student.objects.get(s_age=15)
#获取所有学生中(按id降序排列)的第一个学生信息
stus=Student.objects.order_by('-id')[0]
stus=Student.objects.order_by('-id').first()
#获取所有学生中(按id降序排列)的最后一个学生信息
stus=Student.objects.order_by('-id').last()
以上其实严格来说上次都已经介绍过,这里就简单提一下,接下来的才是今天的正文部分,仍是备忘录形式的记录~
当输入不正确时提示用户名或密码错误的方法
在用户与前端交互时,我们希望可以判断用户输入账号密码是否正确,当不正确时,提醒用户输入错误。(注意:这个文本只有在用户输入错误时才出现,第一次打开网页时并没有该提示)
在html文件中添加一个占位符text:
<p><span style="color:red">{{ text }}</span><span>找回密码?</span></p>
然后在编写相应视图函数时将占位符替换为所需要的内容:
def userLoad(request):
if request.method=="GET":
return render(request,"登录界面.html")
else:
print(request.POST)
#表单提交用户名
userName=request.POST.get("userName")
#表单提交密码
password=request.POST.get("password")
#定义占位符内容
text="用户名或密码错误!"
#从数据库中获取对应id的密码,如果等于表单中的密码,就说明登录成功
if password==User.objects.filter(userid=userName).first().password:
user.UserId=userName
return render(request,"个人中心.html",{'name':User.objects.filter(userid=userName).first().username})
#否则,登陆失败,显示text占位符内容
return render(request,"登录界面.html",{'text':text})
这里要说明:我所使用的表单提交方式为post,提交时将占位符text规定好内容一起提交即可。
运行截图,当第一遍输入错误时,就会出现如下结果:
在这里把表单代码也放出来供大家参考:
<form action="" method="post">
{% csrf_token %}
<!-- Unnamed (文本框) -->
<div id="u12" class="ax_default text_field">
<div id="u12_div" class=""></div>
<input name="userName" id="u12_input" type="text" value="" class="u12_input"/>
</div>
<!-- Unnamed (文本框) -->
<div id="u13" class="ax_default text_field">
<div id="u13_div" class=""></div>
<input name="password" id="u13_input" type="text" value="" class="u13_input"/>
</div>
<!-- Unnamed (矩形) -->
<div id="u14" class="ax_default label">
<div id="u14_div" class=""></div>
<div id="u14_text" class="text ">
<p><span style="color:red">{{ text }}</span><span>找回密码?</span></p>
</div>
</div>
<!-- Unnamed (矩形) -->
<div id="u15" class="ax_default box_1">
<div id="u15_div" class=""></div>
<div id="u15_text" class="text ">
<p><input type="submit" value="登录" id="u15_submit"></p>
</div>
</div>
</form>
前端js如何获取后端传送的数据?
看网上说有好几种方法,其他的还未尝试,只在这里写出一种——json的使用
我对于json的了解不多,在我看来,json是前后端数据交换的一种方式,json的数据一般格式,注意:属性名一定要用双引号而不是单引号:
//json的格式
{
"name":"value"
}
具体有关json的知识有很多,可以另外参考~
django中可以使用下述方法向前端传送数据:
def xxx(request):
data= {"arg": "我是json"}
return render(request,"111.html",{"data":json.dumps(data)})
同时在前端输入:
<script>
var data={{ data | safe }};
document.getElementById("1111").innerHTML=data.arg;
</script>
这样就可以了~
通过前端打开文件资源管理器
最后再提一个很小很小的有关于前端的知识点,无意中发现的:
html居然提供打开文件资源管理器的表单!!!我真的费了好半天劲想解决这个问题,结果居然这么简单/(ㄒoㄒ)/~~
<input type="file" accept=".json">
不说了,回去重修吧┭┮﹏┭┮