后期熟悉jdango的小栗子
作者:互联网
生成迁移文件:python manage.py makemigrations
执行迁移文件:python manage.py migrate
templates
‘HOST’:‘127.0.0.1’,
‘PORT’:‘3306’,
‘USER’:‘root’,
‘PASSWORD’:‘12345’,
用户的登录注册 列表显示
models
class UserInfo(models.Model):
username = models.CharField(max_length=20,null=False,unique=True)
pwd = models.CharField(max_length=10,null=False)
views
def register(request):
if request.method == ‘GET’:
return render(request,‘register.html’)
else:
username = request.POST.get(‘username’,’’).strip()
pwd = request.POST.get(‘pwd’,’’).strip()
next_pwd = request.POST.get(‘next_pwd’,’’).strip()
data = {}
if username == ‘’:
data[‘msg’] = ‘账号不能为空’
elif pwd == ‘’:
data[‘msg’] = ‘密码不能为空’
elif pwd != next_pwd:
data[‘msg’] = ‘两次密码输入不一致’
else:
user = UserInfo()
user.username = username
user.pwd = pwd
user.save()
return HttpResponse(‘注册成功’)
return render(request,‘register.html’,data)
import random
import string
#生成验证码
def get_yzm():
yzm = ‘’
aStr = string.ascii_letters+string.digits
for i in range(4):
yzm += random.choice(aStr)
return yzm
#登录的函数
def login(request):
if request.method == ‘GET’:
yzm = get_yzm()
data = {
‘yzm’:yzm
}
request.session[‘yzm’] = yzm
return render(request,‘login.html’,data)
else:
yzm = request.POST.get(‘yzm’,’’).strip()
username = request.POST.get(‘username’,’’).strip()
pwd = request.POST.get(‘pwd’,’’).strip()
data = {}
if yzm.lower() != request.session.get(‘yzm’).lower():
data[‘msg’] = ‘验证码输入有误’
else:
user = UserInfo.objects.get(username=username,pwd=pwd)
data = {
‘username’ : user.username
}
id = user.pk
request.session[‘id’] = id
return redirect(’/datali/’,data)
yzm = get_yzm()
data[‘yzm’] = yzm
request.session[‘yzm’] = yzm
return render(request,‘login.html’,data)
#登录成功的函数
def datali(requset):
id = requset.session.get(‘id’,’’)
if id :
user = UserInfo.objects.get(pk=id)
data = {
‘user’:user
}
return render(requset,‘datail.html’,data)
else:
return redirect(’/login/’)
#注销的函数
def logout(request):
request.session.flush()
return redirect(’/login/’)
def get_userList(request):
userList = UserInfo.objects.all()
data = {
‘userList’: userList
}
return render(request,‘datail.html’,data)
def gat_userList(request):
userList = UserInfo.objects.all()
data = {
‘userList’: userList
}
return render(request,‘userlist.html’,data)
register.html
{{ msg }}
{% csrf_token %}账号 | |
密码 | |
确认密码 | |
login.html
{{ msg }}
{% csrf_token %}用户名 | |
密码 | |
验证码 | {{ yzm }}看不清换一张 |
欢迎{{ user.username }}登录
注销 <tr>
<td>{{ user.id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.pwd }}</td>
</tr>
序号 | 账号 | 密码 |
userlist.html
{% for user in userList %}{% endfor %}
序号 | 账号 | 密码 |
{{ forloop.counter }} | {{ user.username }} | {{ user.pwd }} |
关于员工的
models
from django.db import models
(4)在employee应用中设计一个雇员(Employee)模型,
模型有三个字段:id(主键 整形自增)、name(字符串 唯一 非空)、salary(float)
(5)将设计好的雇员模型迁移到数据库,创建对应的表
class Employee(models.Model):
id = models.IntegerField(primary_key=True,auto_created=True)
name = models.CharField(max_length=5,null=False,unique=True)
salary = models.FloatField(null=False)
def __str__(self):
return self.name
views
from django.shortcuts import render,HttpResponse
from employee.models import *
import string
import random
def get_yzm():
data = string.digits + string.ascii_letters
yzm = ‘’
for i in range(4):
yzm += random.choice(data)
return yzm
雇员添加函数
def employee(request):
if request.method == ‘GET’:
yzm = get_yzm()
request.session[‘yzm’] = yzm
data = {
‘yzm’:yzm
}
return render(request,‘employee.html’,data)
else:
name = request.POST.get(‘name’,’’).strip()
salary = request.POST.get(‘salary’,’’).strip()
yzm = request.POST.get(‘yzm’,’’).strip()
data = {}
try:
if name == '' or salary=='':
data['msg'] = '雇员姓名或薪资不能为空'
elif Employee.objects.filter(name=name):
data['msg'] = '该雇员已经存在!'
elif yzm.lower() != request.session.get('yzm').lower():
data['msg'] = '验证码不正确!'
else:
em = Employee.objects.create(name=name,salary=salary)
em.save()
return HttpResponse('添加成功!')
except:
data['msg'] = '输入有误!'
yzm = get_yzm()
request.session['yzm'] = yzm
data['yzm'] = yzm
return render(request,'employee.html',data)
employee.html
{{ msg }}
{% csrf_token %}雇员添加页面 | ||
姓名: | ||
薪资: | ||
验证码: | {{ yzm }} 换一个 | |
class GuestBook(models.Model):
id = models.IntegerField(primary_key=True,auto_created=True)
title = models.CharField(max_length=20,null=False)
coutent = models.TextField(null=False)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
----------------**************************************************
guest.html
{{ msg }}
{% csrf_token %}请留言 | |
标题: | |
内容: | |
data = {}
try:
if title=='' or content=='':
data['msg'] = '至少意思一下,写点东西吧!'
else:
guest = GuestBook.objects.create(title=title,coutent=content)
guest.save()
return HttpResponse('感谢你的留言!')
except:
data['msg'] = '劳烦你重新写一次了!'
return render(request,'guest.html',data)
------*******************************************************-------------------
学生-班级
models
#编写和上一题数据库表中对应的学生和班级模型类
class Clazz(models.Model):
cname = models.CharField(max_length=10,null=False,unique=True)
cid = models.ForeignKey(‘Student’,on_delete=models.CASCADE)
class Student(models.Model):
sid = models.IntegerField(primary_key=True,auto_created=True)
sname = models.CharField(max_length=10,null=False)
score = models.FloatField(null=False)
中国人口调查
models
class UserInfo(models.Model):
name = models.CharField(max_length=5,null=False)
sex = models.CharField(max_length=2,null=False)
def __str__(self):
return self.name
class Meta:
verbose_name = '用户'
verbose_name_plural = '用户信息'
class Reach(models.Model):
name = models.CharField(max_length=4,null=False)
age = models.IntegerField(null=False)
def __str__(self):
return self.name
class Meta:
verbose_name = '调查信息'
verbose_name_plural = '调查信息'
views
主页函数:
def index(request):
return render(request,‘index.html’)
def reg(request):
# return HttpResponse(‘这是主页’)
if request.method=='GET':
return render(request,'reg.html')
else:
name = request.POST.get('name','').strip()
sex = request.POST.get('sex','')
data = {}
try:
if name =='' or sex =='':
data['msg'] = '姓名或性别没有填写!'
else:
user = UserInfo.objects.create(name=name,sex=sex)
user.save()
if sex == '男':
sex= '先生'
else:
sex = '女士'
return HttpResponse('%s%s,你好'%(user.name,sex) )
except:
data['msg'] = '请输入真实姓名!'
return render(request,'reg.html',data)
def reach(request):
if request.method == ‘GET’:
return render(request,‘reach.html’)
else:
name = request.POST.get(‘name’,’’).strip()
age = request.POST.get(‘age’,’’).strip()
data = {}
try:
if name=='' or age == '':
data['msg'] = '姓名或年龄不能为空!'
elif int(age) < 15 :
data['msg'] = '你太小了,回去上学吧!'
else:
reach = Reach.objects.create(name=name,age=age)
reach.save()
return HttpResponse('<h3 align="center">谢谢啊,我记住你了!</h3>')
except:
data['msg'] = '请输入真实姓名或年龄!!'
return render(request,'reach.html',data)
index.html
这是渲染出来的主页
去注册
reg.html
{{ msg }}
{% csrf_token %}姓名: | |
性别: | 男 女 |
{{ msg }}
{% csrf_token %}中国人口调查 | |
昵称: | |
年龄: | |
class UserInfo(models.Model):
username = models.CharField(max_length=20,null=False,unique=True)
pwd = models.CharField(max_length=40,null=False)
“”"
#添加数据
u1 = UserInfo()
u1.username = ‘张三’
u1.pwd = ‘123’
u1.save()
u2 = UserInfo.objects.create(username=‘李四’,pwd=‘123’)
查询
UserInfo.objects.get(username=‘123’) #满足的数据必须是一条,如果都不满足或者多条数据满足,会报错
UserInfo.objects.filter(username=‘123’)#返回列表,不会报错,可以使用.values()将每个对象元素转化为字典
UserInfo.objects.all() .first() .last() .values()
修改
u1 = UserInfo.objects.get(username=‘123’)
u1.username = ‘456’
u1.save()
删除
u1 = UserInfo.objects.get(username=‘123’)
u1.delete()
“”"
一对多关系
class Student(models.Model):
name = models.CharField(max_length=20)
classes = models.ForeignKey(‘Classes’,on_delete=models.CASCADE)
class Classes(models.Model):
cname = models.CharField(max_length=10)
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get(‘https://www.baidu.com’)
driver.maximize_window()
driver.find_element_by_xpath(’//*[@id=“kw”]’).send_keys(‘八维’)
driver.find_element_by_xpath(’//*[@id=“su”]’).click()
time.sleep(2)
driver.save_screenshot(‘bawei.png’)
driver.quit()
import requests
from lxml import etree
import pymongo
import time
conn = pymongo.MongoClient(‘127.0.0.1’,27017)
coll = conn[‘qb’][‘text’]
base_url = ‘https://www.qiushibaike.com/text/page/{page}/’
headers = {
‘User-Agent’:‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36’
}
for i in range(1,14):
time.sleep(0.1)
res = requests.get(url=base_url.format(page=i),headers=headers)
print(‘第%d页下载’%i)
# print(res.text)
html = etree.HTML(res.text)
for div in html.xpath('//*[@id="content-left"]/div'):
_id = div.xpath('./a[1]/@href')[0]
author = div.xpath('.//h2/text()')[0].strip()
content = div.xpath('.//div[@class="content"]/span/text()')
content = '\n'.join(content).strip()
# print(author,content)
data = {
'_id':_id,
'author':author,
'content':content
}
coll.save(data)
conn.close()
标签:jdango,return,get,models,request,熟悉,栗子,data,yzm 来源: https://blog.csdn.net/moyizhouJava/article/details/98958667