写在前面
最近有小伙伴们私聊我说出现了很多问题,这里特开一个帖子专门用于错误的指导与交流。首先是说注册和激活有问题,我对此进行了测试,发现没有问题,小伙伴们出现这种问题可能是代码粘贴时的位置出现了错误,请各位小伙伴们自己对比一下代码,注意是否对齐(部分代码进行了完善),这里贴一下代码。
注册代码
# 用于实现用户注册的函数
class RegisterView(View):
# get方法直接返回页面
def get(self, request):
register_form = RegisterForm()
return render(request, "register.html", {'register_form': register_form})
def post(self, request):
# 类的实例化需要一个字典dict参数,而前面我们就知道request.POST是一个QueryDict,所以可以直接传入POST中的信息
register_form = RegisterForm(request.POST)
if register_form.is_valid():
user_name = request.POST.get("email", "")
if UserProfile.objects.filter(email=user_name):
# register_form回填信息必须有,msg是信息提示
return render(request, 'register.html', {'register_form': register_form}, {'msg': '该邮箱已被注册过了'})
# password为前端页面name的返回值,取到用户名和密码我们就开始进行登录验证;取不到时为空。
pass_word = request.POST.get("password", "")
# 实例化一个user_profile对象,存入前端页面获取的值
user_profile = UserProfile()
user_profile.username = user_name
user_profile.email = user_name
# 默认激活状态为False,也就是未激活
user_profile.is_active = False
# 对password进行加密并保存
user_profile.password = make_password(pass_word)
user_profile.save()
send_register_eamil(user_name, 'register')
return render(request, "login.html", )
else:
return render(request, "register.html", {"register_form": register_form})
激活代码
# 用于实现用户激活操作的函数
class ActiveUserView(View):
def get(self, request, active_code):
# 用于查询邮箱验证码是否存在
all_record = EmailVerifyRecord.objects.filter(code=active_code)
# 如果不为空也就是有用户
active_form = ActiveForm(request.GET)
if all_record:
for record in all_record:
# 获取到对应的邮箱
email = record.email
# 查找到邮箱对应的用户
user = UserProfile.objects.get(email=email)
user.is_active = True
user.save()
# 激活成功跳转到登录页面
return render(request, "login.html", )
else:
return render(request, "register.html", {"msg": "您的激活链接无效", "active_form": active_form})
其次是突然所有图片显示不了,我调试发现可能是你上传图片的命名格式出了问题,所以我们的访问地址也要配置:两种形式都可以,不过呢建议大家使用第一种,因为第一种是匹配任意位数,第二种则是贪婪匹配:
# 第一种
# 配置文件上传的访问处理url
re_path('media/(?P<path>\d+)', serve, {"document_root": MEDIA_ROOT})
# 第二种
# 配置文件上传的访问处理url
re_path('media/(?P<path>.*)', serve, {"document_root": MEDIA_ROOT}),
还有因为我这个是Python3+Django2.0,如果你在部署的时候没有新建虚拟环境,那么你就很容易造成Python版本的使用混乱,而Ubuntu自带的Python版本是2.0系列,因此最好是使用虚拟环境来避免这个错误!
目前为止就是这几个问题出的错比较多,如果你发现了其他问题,可以在文章底部留言和我交流~~~
网友评论