完成6-4到6-12,7-1到7-4的学习
(1)在views中from django.views.generic.base import View
(2)改变urls中的配置
form是将用户提交的表单做一些预处理,比如判断逻辑,用form来对用户提交的表单做判断,通过前端验证减少后端代码
(1)在users文件下新建forms.py(2)配置forms.py
(3)完善class LoginView,login.html
(4)最终实现用户名、密码输入不符规范时,form会进行判断并自动返回错误提示
session针对无状态请求,cookie针对有状态请求。
cookie本质是本地浏览器的存储机制,存储在浏览器中,类似缓存,会存储服务器返回的任何信息,以键值对的形式。
缺陷,不安全性,不能将用户所有信息存储在本地,被窃取后会得到用户名和密码,出于安全,服务器在返回id时会使用到session机制(服务器根据用户名和密码生成一段随机字符串,有过期时间,存储在服务器端,将这个session发给用户,用户存储在cookie中,用户在下一次请求中,将该session带回到服务器,服务器通过session的id查询用户,以此来做标记)django利用这种session和cookie机制来实现用户的自动登录。
在用户注册时遇到一个问题,也就是用户在填入注册信息后,一直无法进入到if register_form.is_valid():后面的代码,userprofile中的用户数据一直无法得到更新,后面的环节就很难进行,因此只好按照视频先把代码都添上去了,暂且先不管这个问题。
询问老师说是代码的问题,但检查了许多遍也没有找到错误的代码,为了不拖节奏先忽略这一部分,继续后面的课程,等待老师的回复后再来完善。
利用block和endblock实现对base.html的部分继承,因为在网页中,一些数据图片等是时刻变动的,而另一些是不变的。通过block和endblock来部分继承,可以有效减少代码数,也能实现内容的动态变动。
(1)在后台xadmin中添加城市
(2)在后台xadmin中添加课程机构
(3)上传图片并配置后在网页中显示
最终成果如下:
之前没有准备图片,所以随便上传的几张图片(也只有这几张了)
摘自完成的一道综合编程题
使用字典和列表型变量完成学生通讯录管理,名单由考生目录下文件 address.txt 给出,每行是一个学生的信息。示例如下:
学号,姓名,电话号码,地址
101,aa,12345678,Beijing
102,bb,23456781,shanghai
问题1:参照代码模板完善代码,实现下述功能。在屏幕上显示功能菜单,功能菜单示例如下:
请输入数字1-3选择功能:
接收用户输入数字选择功能,如果输入错误,要求用户重新输入。如果输入正确,在屏幕上显示提示语句:您选择了功能1/2/3. (5分)
问题2:在问题1的代码基础上完善代码,实现下述功能。实现功能1——当用户选择1的时候,从通讯录文件读取信息,显示所有信息。(5分)
示例如下:
请输入数字1-3选择功能:1
101,aa,12345678,Beijing
102,bb,23456781,shanghai
问题3:在问题2的代码基础上完善代码,实现下述功能。实现功能2——追加信息。让用户从键盘输入一个学生的信息,用逗号隔开。在屏幕上显示追加后的所有信息,并将信息写入文件 new_address.txt 中,文件格式与 address 相同。(10分)
New_address.txtd内容示例如下:
101,aa,12345678,Beijing
102,bb,23456781,shanghai
103,cc,34567,tianj
在解决问题1的时候使用到flag的方法,flag默认为1,且flag为1时持续输出要求用户输入的信息。用户正确输入后flag赋值为0,非法输入和超过意义范围flag都为1。
最终代码:
def display():
fi = open("address.txt",'r')
txt = fi.readlines()
for i in txt:
print(i)
fi.close()
def insertrec():
fi = open("address.txt",'r')
fo = open("new_address.txt",'w')
la=[]
for l in fi:
la.append(l.replace('\n',''))
rec = input("请输入要插入的信息,以逗号隔开,示例:103, cc, 34567812, tianjing:")
la.append(rec)
for l in la:
fo.write(l)
fo.write('\n')
fi.close()
fo.close()
menu=["1. 显示所有信息","2. 追加信息","3. 删除信息"]
flag = 1
while flag:
for i in menu:
print(i)
try:
ch = int(input("请输入数字1-3选择功能:"))
flag = 0
except:
flag = 1
if ch < 1 or ch > 3:
flag = 1
print("您选择了功能", ch)
if ch ==1:
display()
elif ch==2:
insertrec()
elif ch ==3:
pass