16(1),秋招面试难不难

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Python全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img



既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024c (备注Python)
img

正文

urlpatterns = [

path(‘reg’, views.reg_view)

]

在这里插入图片描述

6.4. 视图函数


def reg_view(request):

注册

if request.method == ‘GET’:

GET 返回界面

return render(request, ‘user/register.html’)

elif request.method == ‘POST’:

POST 处理提交数据

username = request.POST[‘username’]

password_1 = request.POST[‘password_1’]

password_2 = request.POST[‘password_2’]

1. 两个密码要保持一致

if password_1 != password_2:

return HttpResponse(‘两次密码输入不一致’)

2. 用户名是否可用

old_users = User.objects.filter(username=username)

if old_users:

return HttpResponse(‘用户名已注册’)

3. 插入数据【明文密码处理】

User.objects.create(username=username, password=password_1)

return HttpResponse(‘注册成功’)

在这里插入图片描述

6.5. 测试


基础代码编写完成后,进行测试成功

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

七、注册问题 — 优化

======================================================================

  • 密码如何处理

  • 插入问题

  • 产品经理要求注册则免登录一天,如何实现

7.1. 哈希算法


哈希算法 —— 给定明文,计算出一段定长的,不可逆的值

7.1.1. 特点

  • 定长输出:不管明文输入长度为多少,哈希值都是定长的。md5 - 32位16进制

  • 不可逆:无法反向计算出对应的明文

  • 雪崩效应:输入改变,输出必然变

7.1.2. 使用场景

  1. 密码加密

  2. 文件完整性校验

7.1.3. 如何使用

python3内置hashlib哈希算法包

import hashlib

m = hashlib.md5()

m.update(b’123456’)

m.hexdigest()

如果想要生成别的哈希值,需要重新生成hashlib…。不然就是字符串拼接

在这里插入图片描述

7.1.4. 密码加密

在这里插入图片描述

7.1.5. 测试

重新注册查看数据库,存储加密后的密码

在这里插入图片描述

7.2. 并发写入


在数据进行插入执行create操作的时候,如果并发量高了,多用户同时注册,可能会出现同时执行create的情况,如果申请用户名一致,则会报错。

解决方案:

在插入的时候,try…catch…一下

try:

User.objects.create(username=username, password=password)

except Exception as e:

有可能报错 重复插入【唯一索引注意并发写入问题】

print(‘–create user error %s’ % e)

return HttpResponse(‘用户名已注册’)

return HttpResponse(‘注册成功’)

在这里插入图片描述

7.3. 免登录


在session中存储用户信息

免登录一天

request.session[‘username’] = username

request.session[‘uid’] = user.id

八、用户登录

=================================================================

  • url:/user/login

  • 视图函数:login_view

  • 模板位置:templates/user/login.html

  • 页面样式:

  • 流程:

  • 发送GET请求的话,返回界面

  • 点击登录发送POST请求,进行登录

8.1. 模板界面


登录

用户名:

密码:

记住用户名

在这里插入图片描述

8.2. 路由


from django.urls import path

from . import views

urlpatterns = [

path(‘reg’, views.reg_view),

path(‘login’, views.login_view)

]

在这里插入图片描述

8.3. 访问逻辑


在这里插入图片描述

8.4. 视图函数


如果点击记住用户名,则在浏览器端存储cookies

def login_view(request):

登录

if request.method == ‘GET’:

return render(request, ‘user/login.html’)

elif request.method == ‘POST’:

username = request.POST[‘username’]

password = request.POST[‘password’]

try:

user = User.objects.get(username=username)

except Exception as e:

print(‘–login user error %s’ % e)

return HttpResponse(‘用户名或密码错误’)

比对密码

m = hashlib.md5()

m.update(password.encode())

if m.hexdigest() != user.password:

return HttpResponse(‘用户名或密码错误’)

记录会话状态

request.session[‘username’] = username

request.session[‘uid’] = user.id

resp = HttpResponse(‘登录成功’)

判断用户是否点选了’记录用户名’

if ‘remember’ in request.POST:

点选了 → Cookies 存储 username,uid 时间 3

resp.set_cookie(‘username’, username, 3600243)

resp.set_cookie(‘uid’, user.id, 3600243)

return resp

8.5. 测试


在这里插入图片描述

九、用户登录 — 优化

======================================================================

用户登录流程

获取界面后

  1. 请求登录界面

  2. 服务器端检查session

  3. session有数据的话,直接跳转主界面

  4. session没有数据的话,检查浏览器端cookie,如果cookie有数据,跳转主界面

  5. session没有数据、cookie没有数据的话,跳转登陆界面

def login_view(request):

登录

if request.method == ‘GET’:

检查登录状态,如果登陆了,显示’已登录’

if request.session.get(‘username’) and request.session.get(‘uid’):

return HttpResponse(‘已登录’)

检查Cookies

c_username = request.COOKIES.get(‘username’)

c_uid = request.COOKIES.get(‘uid’)

if c_username and c_uid:

回写session

request.session[‘username’] = c_username

request.session[‘uid’] = c_uid

return HttpResponse(‘已登录’)

return render(request, ‘user/login.html’)

elif request.method == ‘POST’:

···

在这里插入图片描述

十、网站首页

=================================================================

  • url:/index

  • 视图函数:index_view

  • 模板位置:templates/index/index.html

  • 界面样式

在这里插入图片描述

10.1. 创建新项目


10.1.1. 生成项目

$ python3 manage.py startapp index

在这里插入图片描述

10.1.2. 注册

在这里插入图片描述

10.2. 模板界面


首页

{% if request.session.username %}

欢迎{{ request.session.username }}

退出登录

进入我的笔记

{% else %}

{% if request.COOKIES.username %}

欢迎{{ request.COOKIES.username }}

退出登录

进入我的笔记

{% else %}

登录

注册

{% endif %}

{% endif %}

在这里插入图片描述

10.3. 路由


在这里插入图片描述

10.4. 视图函数


def index_view(request):

return render(request, ‘index/index.html’)

在这里插入图片描述

10.5. 测试


在这里插入图片描述

10.6. 修改登录注册视图函数


改为跳转到首页

from django.http import HttpResponse, HttpResponseRedirect

from django.shortcuts import render

from .models import User

import hashlib

Create your views here.

def reg_view(request):

注册

if request.method == ‘GET’:

GET 返回界面

return render(request, ‘user/register.html’)

elif request.method == ‘POST’:

POST 处理提交数据

username = request.POST[‘username’]

password_1 = request.POST[‘password_1’]

password_2 = request.POST[‘password_2’]

1. 两个密码要保持一致

if password_1 != password_2:

return HttpResponse(‘两次密码输入不一致’)

哈希算法 —— 给定明文,计算出一段定长的,不可逆的值 md5 sha256

m = hashlib.md5()

m.update(password_1.encode())

password = m.hexdigest()

2. 用户名是否可用

old_users = User.objects.filter(username=username)

if old_users:

return HttpResponse(‘用户名已注册’)

3. 插入数据【明文密码处理】

try:

user = User.objects.create(username=username, password=password)

except Exception as e:

有可能报错 重复插入【唯一索引注意并发写入问题】

print(‘–create user error %s’ % e)

return HttpResponse(‘用户名已注册’)

免登录一天

request.session[‘username’] = username

request.session[‘uid’] = user.id

TODO:修改session存储时间为1天

return HttpResponse(‘注册成功’)

return HttpResponseRedirect(‘/index’)

def login_view(request):

登录

if request.method == ‘GET’:

检查登录状态,如果登陆了,显示’已登录’

if request.session.get(‘username’) and request.session.get(‘uid’):

return HttpResponse(‘已登录’)

return HttpResponseRedirect(‘/index’)

检查Cookies

c_username = request.COOKIES.get(‘username’)

c_uid = request.COOKIE.get(‘uid’)

if c_username and c_uid:

回写session

request.session[‘username’] = c_username

request.session[‘uid’] = c_uid

return HttpResponse(‘已登录’)

return HttpResponseRedirect(‘/index’)

return render(request, ‘user/login.html’)

elif request.method == ‘POST’:

username = request.POST[‘username’]

password = request.POST[‘password’]

try:

user = User.objects.get(username=username)

except Exception as e:

print(‘–login user error %s’ % e)

return HttpResponse(‘用户名或密码错误’)

比对密码

m = hashlib.md5()

m.update(password.encode())

if m.hexdigest() != user.password:

return HttpResponse(‘用户名或密码错误’)

记录会话状态

request.session[‘username’] = username

request.session[‘uid’] = user.id

resp = HttpResponse(‘登录成功’)

resp = HttpResponseRedirect(‘/index’)

判断用户是否点选了’记录用户名’

if ‘remember’ in request.POST:

点选了 → Cookies 存储 username,uid 时间 3

resp.set_cookie(‘username’, username, 3600243)

resp.set_cookie(‘uid’, user.id, 3600243)

return resp

在这里插入图片描述

十一、退出登录

==================================================================

  • url:/user/logout

  • 视图函数:logout_view

  • 模板位置:无

  • 界面:点击登陆后的网页网站中"退出登录"触发退出;成功退出后302跳转至网站首页

在这里插入图片描述

11.1. 路由


from django.urls import path

from . import views

urlpatterns = [

path(‘reg’, views.reg_view),

path(‘login’, views.login_view),

path(‘logout’, views.logout_view)

]

在这里插入图片描述

11.2. 视图函数


def logout_view(request):

删除session值

if ‘username’ in request.session:

del request.session[‘username’]

if ‘uid’ in request.session:

del request.session[‘uid’]

检查cookie

resp = HttpResponseRedirect(‘/index’)

if ‘username’ in request.COOKIES:

resp.delete_cookie(‘username’)

if ‘uid’ in request.COOKIES:

resp.delete_cookie(‘uid’)

return resp

在这里插入图片描述

11.3. 界面


在这里插入图片描述

十二、笔记功能

==================================================================

12.1. 创建应用


命令:python3 manage.py startapp note

在这里插入图片描述

12.2. 注册应用


在这里插入图片描述

12.3. 笔记模型类


from django.db import models

from user.models import User

Create your models here.

class Note(models.Model):

title = models.CharField(‘标题’, max_length=100)

content = models.TextField(‘内容’)

create_time = models.DateTimeField(‘创建时间’, auto_now_add=True)

update_time = models.DateTimeField(‘更新时间’, auto_now=True)

user = models.ForeignKey(User, on_delete=models.CASCADE)

12.4. 迁移


  • 命令1:python3 manage.py makemigrations

.在这里插入图片描述

  • 命令2:python3 manage.py migrate

在这里插入图片描述

12.5. 笔记模块 — 列表页


  • url:/note/all

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

ue)

update_time = models.DateTimeField(‘更新时间’, auto_now=True)

user = models.ForeignKey(User, on_delete=models.CASCADE)

12.4. 迁移


  • 命令1:python3 manage.py makemigrations

.在这里插入图片描述

  • 命令2:python3 manage.py migrate

在这里插入图片描述

12.5. 笔记模块 — 列表页


  • url:/note/all

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注python)
[外链图片转存中…(img-UGP2mOae-1713620264362)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值