Django登录实验实现步骤(windows版)

Django的安装教程,可以参考我以前的博客Windows下Django搭建
1.创建存放项目的文件,如D:\Django_test
2.创建Django项目,在D:\Django_test中的cmd环境中运行下面这条命令,便可以创建出一个名为jiangyb的文件夹

django-admin startproject jiangyb

在这里插入图片描述
下面进入到刚刚创建的文件夹中

cd jiangyb

在这里插入图片描述
运行下面这条命令

python manage.py startapp jiangyb0318

在这里插入图片描述
4.修改设置文件,找到 D:\Django_test\jiangyb\jiangyb\setting.py,将APP的名称’jiangyb0318’ 添加到INSTALLED_APPS里,如下图所示。
在这里插入图片描述
在这里插入图片描述
将 LANGUAGE_CODE 修改为 ‘zh-hans’;
将 TIME_ZONE 修改为 ‘Asia/Shanghai’;
将 USE_TZ 修改为 False;如下图所示。
在这里插入图片描述
修改数据库配置,前提是有可用的MySQL数据库,并创建对应名称的数据库,然后将 DATABASES 里的内容修改为如下图所示。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'openstack_test',#数据库名称,mysql中存在对应的数据库
        'HOST': '127.0.0.1', #数据库地址
        'PORT': '3306', #数据库端口
        'USER': 'root', #数据库用户名
        'PASSWORD': '123456' #数据库密码
    }
}

在这里插入图片描述
到此,完成Django项目、APP的创建和配置
下面进行文件目录进行说明

在这里插入图片描述

/jiangyb:对整个项目进行配置
/jiangyb/setting.py:各种属性配置
/jiangyb/urls.py:URL路由配置 
/jiangyb/jiangyb0318/templates/chenjl0001:存放HTML文件
/jiangyb/jiangyb0318/forms.py:编写生成form表单代码
/jiangyb/jiangyb0318/models.py:编写操作Model代码
/jiangyb/jiangyb0318/urls.py:URL对应关系配置
/jiangyb/jiangyb0318/views.py:定义URL响应函数(处理逻辑)

编写代码,实现用户登录功能

配置URL
创建文件,如下图所示。

修改D:\Django_test\jiangyb\jiangyb\urls.py文件 如图所示
在这里插入图片描述
然后 在D:\Django_test\jiangyb\jiangyb\jiangyb0318文件夹下创建 urls.py文件,

from django.urls import path
from.import views


app_name='jiangyb0318'

urlpatterns=[
    path('login/',views.login,name="login"),
]

在这里插入图片描述
在D:\Django_test\jiangyb\jiangyb\jiangyb0318文件下创建 forms.py文件,并在里面编写登录要使用的forms表单,如下图所示。

from django import forms
import re

class LoginForm(forms.Form):
    domain =forms.CharField(label='域名',max_length=50)
    username =forms.CharField(label='账号',max_length=50)
    password =forms.CharField(label='密码',max_length=50)
    
    def clean_domin(self):
        domain =self.cleaned_data.get('domain')
        
        wrongRegex =re.compile('[^a-zA-Z0-9]')
        if wrongRegex.search(domain)!=None:
            raise froms.ValidationError("域名只能包含数字和字母,请重新输入!")
        else:
            if len(domain)<3 or len(domain)>20:
                raise froms.ValidationError("域名应该在3-20位之间,请重新输入!")
        return domain

    def clean_username(self):
        domain =self.cleaned_data.get('username')
        
        wrongRegex =re.compile('[^a-zA-Z0-9]')
        if wrongRegex.search(domain)!=None:
            raise froms.ValidationError("账号只能包含数字和字母,请重新输入!")
        else:
            if len(domain)<3 or len(domain)>20:
                raise froms.ValidationError("账号应该在3-20位之间,请重新输入!")
        return username
    
    def clean_password(self):
        domain =self.cleaned_data.get('password')
        wrongRegex =re.compile('[^a-zA-Z0-9]')
        if wrongRegex.search(domain)!=None:
            raise froms.ValidationError("密码只能包含数字和字母,请重新输入!")
        else:
            if len(domain)<3 or len(domain)>20:
                raise froms.ValidationError("密码应该在3-20位之间,请重新输入!")
        return password

在这里插入图片描述
编写逻辑views

headers["X-Auth-Token"]=domain_token
resp=requests.get(url,headers=headers)
return resp

def login(request):
    
  if request.method=="POST":
      
      form=LoginForm(request.POST)
      if form.is_valid():
          domain=form.clraned_data.get("domain")
          username=form.clraned_data.get("username")
          password=form.clraned_data.get("password")
            
            
          domain_resp=get_domain_token(domain,username,password)
          if domain_resp.status_code==201:
             request.session["domain_token"]=domain_resp.headers.get("X-Subject-Token")
                
             project_resp=get_prject_token(request.session.get("domain_token",None),domain)
             request.session["project_token"]=project_resp.headers.get("X-Subject-Token")
                
             return redirect('/yubt1841310417/project/')
          else:
             message="  ½ʧ ܣ        ˺Ż        "
             return rander(request,'yubt1841310417/login.html',{'form':form,'message':message})
  else:
       form =LoginForm()
       
  return render(request,'yubt1841310417/login.html',{'form':form})

在这里插入图片描述

4.编写HTML模板(Template)
在 D:\Django_test\jiangyb\jiangyb\jiangyb0318文件夹下创建相应的login.html文件,并编写内容,如下图所示。

{%block content%}
<style>
  .forn-wrapper{
   width:500px;
   margin:100px auto;
   text-align:cnter;
  }
</style>
{%if message%}
{{message}}
{%endif%}
<div class="forn-wrapper">
    <h2>登录</h2>
    <form method="post" action="" enctype="multipart/form-data">
      {%csrf_token%>
      {%for field in form%}
        <div class="fieldWrapper">
        {{field.errors}}
        {{field.label_tag}}{{field}}
        {%if field.help_text%}
           <p class="help">{{%field.help_text|safe%}}</p>
        {%endif%}
         </div>
        {%endfor%}
       <div class="button-wrapper submit">
        <input type="submit"value="确定" />
       </div>
    </form>
</div>
{%endblock%}

在这里插入图片描述
在终端运行以下命令,启动本地服务器
在这里插入图片描述
然后在浏览器中访问http://127.0.0.1:8080/jiangyb0318/login/,请求成功后返回如下页面
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值