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/,请求成功后返回如下页面