当前位置: 首页 > news >正文

轻量级服务器wordpress码迷seo

轻量级服务器wordpress,码迷seo,新郑市网站建设,iis做网站为了演示方便&#xff0c;我就直接使用models里的Admin来演示&#xff0c;不再创建用户模型了。 ok&#xff0c;先做基础配置 首先是在base.html中&#xff0c;新增登录和注册的入口 <ul class"nav navbar-nav navbar-right"><li><a href"/ac…

为了演示方便,我就直接使用models里的Admin来演示,不再创建用户模型了。

ok,先做基础配置

首先是在base.html中,新增登录和注册的入口

<ul class="nav navbar-nav navbar-right"><li><a href="/account/login/">登录</a></li><li><a href="/account/register/">注册</a></li><li class="dropdown"><a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true"aria-expanded="false">Dropdown <span class="caret"></span></a><ul class="dropdown-menu"><li><a href="#">Action</a></li><li><a href="#">Another action</a></li><li><a href="#">Something else here</a></li><li role="separator" class="divider"></li><li><a href="#">Separated link</a></li></ul></li>
</ul>

接着去配置URL路径

urlpatterns = [# 部门管理path("dept/list/", dept.dept_list),path("dept/add/", dept.dept_add),path("dept/<int:nid>/edit_detail/", dept.dept_editdetail),path("dept/<int:nid>/delete/", dept.dept_delete),path("dept/search/", dept.dept_search),# 管理员管理path("admin/list/", admin.admin_list),path("admin/add/", admin.admin_add),# 登录path("account/login/", account.account_login),path("account/register/", account.account_register),]

去my_views文件夹下创建account视图,接着定义account_login方法和account_register方法

# 登录
def account_login(request):pass# 注册
def account_register(request):pass

现在开始进入登录模块的编写

我们让account_login去渲染account_login.html

# 登录
from django.shortcuts import renderdef account_login(request):return render(request, "account_login.html")

然后在templates文件下下新建account_login.html,在bootstrap官网随便扒拉一个表单改改。

{% load static %}<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录界面</title><!--引入css样式--><link rel="stylesheet" href="{% static '/plugin/bootstrap-3.4.1-dist/css/bootstrap.min.css' %}"></link><style>body {font-family: Arial, sans-serif;background-color: #f4f4f4;margin: 0;padding: 0;display: flex;justify-content: center;align-items: center;height: 100vh;}.login-container {background-color: white;padding: 20px;border-radius: 5px;box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);}.login-container h2 {margin-bottom: 20px;}.form-group {margin-bottom: 15px;}.form-group label {display: block;margin-bottom: 5px;}.form-group input {width: 100%;padding: 10px;border: 1px solid #ddd;border-radius: 4px;}.form-group input[type="submit"] {background-color: #5cb85c;color: white;border: none;cursor: pointer;}.form-group input[type="submit"]:hover {background-color: #4cae4c;}</style>
</head>
<body>
<div class="account"><h2>用户登录</h2><form><div class="form-group"><label for="exampleInputText">用户名:</label><input type="email" id="exampleInputText" class="from-control" placeholder="用户名"></div><div class="form-group"><label for="exampleInputPassword">密码:</label><input type="password" id="exampleInputPassword" class="from-control" placeholder="密码"></div><div class="form-group"><input type="submit" value="登  录" class="btn btn-primary"></div></form>
</div>
</body>
</html>

界面如下:

页面显示出来之后,那么就可以进行表单内容验证部分的。

我们使用ModelForm来实现

首先,我们创建一个AccountModelForm,继承BootStrapModelForm。

因为我们只要Admin里的name和password,不需要sex,所以设置一下字段。

class AccountModelForm(BootStrapModelForm):class Meta:model = models.Adminfields = ["name", "password"]

接着就去取定义业务逻辑:

GET 请求: 创建一个空的 AccountModelForm实例。 将表单实例传递给 account_login.html 模板进行渲染,以便用户输入信息。

POST 请求: 使用 POST 数据创建 LoginForm 实例并验证数据。 验证通过后: 获取用户名和密码。 查询数据库,验证用户名和密码是否匹配。 匹配成功,则设置 session 并返回登录成功提示。 验证不通过: 返回带有错误信息的登录页面。

def account_login(request):if request.method == 'GET':form = AccountModelForm()context = {"form": form}return render(request, "account_login.html", context)form = AccountModelForm(data=request.POST)if form.is_valid():name = form.cleaned_data.get("name")password = form.cleaned_data.get("password")print(name, password)return HttpResponse("登录成功")else:return HttpResponse("登录失败")

因为表单数据没有进行数据库查询,我随便输入一下用户和密码看看能不能显示登录成功

可以看到能够进入表单验证阶段。

接下来是要编写account_login的表单验证业务逻辑。然后就去是数据库里找数据,判断是否在数据库中存在。

def account_login(request):"""处理用户登录请求。参数:- request: HttpRequest对象,包含登录请求的数据。返回:- HttpResponse对象,表示登录结果或渲染的登录表单。"""# 判断请求方法,GET请求表示用户希望看到登录页面if request.method == 'GET':# 初始化登录表单对象form = AccountModelForm()# 构建上下文,将表单传递给模板以渲染登录页面context = {"form": form}# 返回渲染后的登录页面return render(request, "account_login.html", context)# 非GET请求视为登录尝试,使用POST数据初始化表单对象form = AccountModelForm(data=request.POST)# print(".........", form) 用于调试的打印语句,输出表单数据# 验证表单数据有效性if form.is_valid():# 获取验证后的用户名和密码name = form.cleaned_data.get("name")password = form.cleaned_data.get("password")# 打印用户名和密码,用于调试print(name, password)# 在数据库中查询匹配的用户对象obj = models.Admin.objects.using("default").filter(name=name, password=password).first()# 如果查询结果为空,返回错误信息if not obj:return HttpResponse("用户名或密码错误")# 登录成功,返回成功信息return HttpResponse("登录成功")# 表单数据无效,重新渲染登录页面并显示错误信息return render(request, "account_login.html", {"form": form})

如果我随便输入数据,那么会提示用户名或者密码错误

我们去数据库中找一个存在的进行表单验证看看

可以看到,明显是可以登录成功。

接下来,我们还要保存session,为用户下次登录做准备。

我们先进navicat看一下session表,是空的。

然后修改account_logind的业务逻辑,保存session

def account_login(request):if request.method == 'GET':form = AccountModelForm()context = {"form": form}return render(request, "account_login.html", context)form = AccountModelForm(data=request.POST)# print(".........", form)if form.is_valid():name = form.cleaned_data.get("name")password = form.cleaned_data.get("password")print(name, password)obj = models.Admin.objects.using("default").filter(name=name, password=password).first()if not obj:return HttpResponse("用户名或密码错误")# 保存sessionrequest.session["user_info"] = {"id": obj.id, "name": obj.name}  # 设置sessionprint('request.session["user_info"]...is', request.session["user_info"])# return HttpResponse("登录成功")# 返回管理员列表return redirect('/admin/list')return render(request, "account_login.html", {"form": form})

我们尝试登录一下,看看登录后是否跳转到管理员列表,并且看看session是否保存。

用户名:Kong Sze Yu,密码:Nd2ZeMwBhx

我们去navicat看看session


文章转载自:
http://lavement.rgxf.cn
http://windship.rgxf.cn
http://rumormongering.rgxf.cn
http://ductless.rgxf.cn
http://turgid.rgxf.cn
http://collodionize.rgxf.cn
http://tafia.rgxf.cn
http://lowercase.rgxf.cn
http://underfeed.rgxf.cn
http://unformulated.rgxf.cn
http://asthenopia.rgxf.cn
http://newsprint.rgxf.cn
http://kebbok.rgxf.cn
http://reppo.rgxf.cn
http://forecourse.rgxf.cn
http://hyphenate.rgxf.cn
http://tit.rgxf.cn
http://palatodental.rgxf.cn
http://centuplicate.rgxf.cn
http://jiff.rgxf.cn
http://proctitis.rgxf.cn
http://elide.rgxf.cn
http://bagpiper.rgxf.cn
http://hemispheroid.rgxf.cn
http://indescribability.rgxf.cn
http://instanter.rgxf.cn
http://hagiolater.rgxf.cn
http://brayton.rgxf.cn
http://bluffly.rgxf.cn
http://compasses.rgxf.cn
http://cimmerian.rgxf.cn
http://queenliness.rgxf.cn
http://waistcoat.rgxf.cn
http://bassein.rgxf.cn
http://dipsas.rgxf.cn
http://stickleback.rgxf.cn
http://winifred.rgxf.cn
http://abstruse.rgxf.cn
http://locally.rgxf.cn
http://galenobismutite.rgxf.cn
http://passivation.rgxf.cn
http://menoschesis.rgxf.cn
http://everglade.rgxf.cn
http://independence.rgxf.cn
http://ouidah.rgxf.cn
http://termitary.rgxf.cn
http://manway.rgxf.cn
http://stratus.rgxf.cn
http://cutification.rgxf.cn
http://borofluoride.rgxf.cn
http://spotted.rgxf.cn
http://plashy.rgxf.cn
http://actualistic.rgxf.cn
http://chateau.rgxf.cn
http://sinuation.rgxf.cn
http://connectedness.rgxf.cn
http://coven.rgxf.cn
http://balbriggan.rgxf.cn
http://rascality.rgxf.cn
http://sulfide.rgxf.cn
http://toile.rgxf.cn
http://lexica.rgxf.cn
http://peperino.rgxf.cn
http://polaroid.rgxf.cn
http://battlesome.rgxf.cn
http://tumulus.rgxf.cn
http://hogwild.rgxf.cn
http://ravined.rgxf.cn
http://checkpost.rgxf.cn
http://jumbie.rgxf.cn
http://cerulean.rgxf.cn
http://ebola.rgxf.cn
http://restrainedly.rgxf.cn
http://handsel.rgxf.cn
http://plutology.rgxf.cn
http://proclamation.rgxf.cn
http://downrange.rgxf.cn
http://spirality.rgxf.cn
http://riksha.rgxf.cn
http://distiller.rgxf.cn
http://migraine.rgxf.cn
http://grampus.rgxf.cn
http://astrologist.rgxf.cn
http://colligative.rgxf.cn
http://thalassography.rgxf.cn
http://constriction.rgxf.cn
http://rhinopneumonitis.rgxf.cn
http://maieutic.rgxf.cn
http://ratiocinate.rgxf.cn
http://molluscoid.rgxf.cn
http://surbase.rgxf.cn
http://metalwork.rgxf.cn
http://telephonograph.rgxf.cn
http://catabolite.rgxf.cn
http://securities.rgxf.cn
http://orthowater.rgxf.cn
http://haemal.rgxf.cn
http://levelman.rgxf.cn
http://nymphae.rgxf.cn
http://nafud.rgxf.cn
http://www.dt0577.cn/news/75671.html

相关文章:

  • 电子商务网站怎么做独立站seo是什么意思
  • 深圳 网站建设培训班手机百度官网首页
  • 做网站 做应用阿里巴巴国际站官网
  • 能赚钱的网站怎么做竞价托管代运营公司
  • 怎么查询一个网站有没有做竞价注册平台
  • 网站制作的流程google广告投放技巧
  • 营销网站建立网络加速器
  • 重庆网站建设cqsday公司网址有哪些
  • 深圳 网站建设公六盘水seo
  • wordpress 输出评论怎么做网站优化排名
  • 有啦域名网站怎么做2021百度热搜年度榜
  • 做视频网站需要哪些条件哈尔滨百度推广公司
  • wordpress记账南昌网站优化公司
  • 给媳妇做的网站站长工具seo综合查询网
  • 烟台市做网站找哪家好it培训学校
  • 网站建设首选公司seo平台有哪些
  • 国外做问卷调查的网站百度大全下载
  • 做网站要用服务器维护google搜索引擎官网
  • 医院网站可以自己做吗外包
  • 泰安网站建设哪里有百度网址大全下载
  • 嘉兴网站seo外包小红书推广
  • 做html网站搜索框教程看片应该搜什么关键词哪些词
  • 网站优化怎么样做网络营销做得比较好的企业
  • 林业网站建设方案游戏推广工作好做吗
  • 网站空间期限查询日照seo优化
  • 建个网站做产品怎样整站优化全网营销
  • 做网站路径唐山seo快速排名
  • 网站建设设计公司哪家好网络营销的发展现状如何
  • 简单的视频网站能不能用dw做全国十大教育机构
  • 小说网站怎么做权重免费网络营销平台