后期熟悉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
h1 align=“center” style=“color: red”>{{ msg }}</h1

{% csrf_token %}
    <tr>
        <td>账号</td>
        <td>
            <input type="text" name="username" value="{{ username }}">
        </td>
    </tr>
    <tr>
        <td>密码</td>
        <td>
            <input type="password" name="pwd" value="{{ pwd }}">
        </td>
    </tr>
    <tr>
        <td>确认密码</td>
        <td>
            <input type="password" name="next_pwd" value="{{ next_pwd }}">
        </td>
    </tr>
    <tr>
        <td align="center" colspan="2">
            <input type="submit" value="注册">
        </td>
    </tr>

login.html
h1 align=“center” style=“color: red”>{{ msg }}</h1

{% csrf_token %} table align="center" border="1"> 用户名 密码 验证码 {{ yzm }}看不清换一张 /table> 还没注册点击 --------------------------------------------------------------------- datail.html {% csrf_token %}
欢迎{{ 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

h3 align=“center”>{{ msg }}

{% csrf_token %}
雇员添加页面
姓名:
薪资:
验证码:{{ yzm }} 换一个
--------------******************************************************* 设计留言板 models #设计留言板模型:包含id(主键自增)、title(字符串、非空)、 # content(字符串)、created(日期类型)

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 %}
请留言
标题:
内容:
----------------*************************************************** views def guest(request): if request.method=='GET': return render(request,'guest.html') else: title = request.POST.get('title','').strip() content = request.POST.get('content','').strip()
    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 %}
姓名:
性别: 男 女
---------------------------------------------------------------------------------------- reach.html
{{ msg }}
{% csrf_token %}
中国人口调查
昵称:
年龄:
----------------------------------------------------------------------------------------- shell from django.db import models

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()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值