现在基本任何的网页都需要登录注册功能,今天看一下注册。
从这里开始,精彩的部分就来了。django也变得好玩多了 。
首先呢,创建static文件夹。来存放前段给的css,js,image等文件。
注意,html文件不要放到static里面哦,我们需要将html文件放入到template文件夹下。
大概是这样。
static
为了方便找到我们的static文件,我们先来配置环境,来到settings文件中添加。
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
这样我们在使用静态文件的时候会更方便。
现在我们来定义注册界面的url,先来介绍一下include的使用。
include
为什么要使用include,不使用include,我们需要将所有的url都放在TestProject下的urls里面,后期修改管理的时候会特别麻烦,所以我们可以将每一个app的url放到每个app内,所以我们需要现在app内创建urls.py文件,like this.
接下来我们需要求改我们TestProject下的urls.py文件。
from django.conf.urls import url, include
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
url(r'^user/', include('users.urls', namespace='users')),
]
然后我们users下的urls.py文件需要做什么呢
from django.conf.urls import url
from .views import LoginView, RegisterView
urlpatterns = [
url(r'login/', LoginView.as_view(), name='login'),
url(r'register/', RegisterView.as_view(), name='register'),
]
我们需要添加Views与url 然后跟TestProject.urls文件一样有个urlpatterns.
这一步没什么难的,问题是这个View是干什么呢。我们来看一下官方文档。
什么意思类,大概翻译一下,一个view方法或者一个简写的view只是一个python发起网络请求与返回结果的方法。这个请求可以是网页,重定向,xml巴拉巴拉巴拉,这个view呢,为了必要的返回结果,可以包含任意的逻辑,之后就是你可以放在任何位置,为了存放我们放到了views.py文件中,(恩,大概是这个意思)。
这样就清楚了,view就是获取到请求,然后我们在通过他返回一个response。
高清后我们来写个我们的View
from django.shortcuts import render
from django.views.generic.base import View
# Create your views here.
class RegisterView(View):
def get(self, request):
return render(request, 'register.html', {
})
这样我们通过get方法接收到get请求,拿到request,然后在通过return render来返回Response。render能返回Response?command进去看看。
是的可以返回一个Response。
到这之后基本就完成了,是不是很简单。我们看一下效果http://127.0.0.1:8000/user/register。
WTF!!!
这是啥 ?我在哪? css,js呢?
来到html文件看一下我们发现所有的css,image,js都是../开头主要还是美工是通过../来获取文件,但是这里我们的文件地址改了。我们要怎么做呢?
我们需要将所有的../换成{% static '' %} 然后将../后面的内容放到 ' ' 中。换完之后看一下效果。
恩 还不错,我们的界面算是完成了,接下来就是处理数据了。
我们可以看到注册有一个验证码的地方,我们来吧验证码先解决了。
验证码
然我们来到github然后配置一下,地址在这。文档在这
- 先来安装一下。当然要进到环境里
pip install django-simple-captcha
- captcha添加到settings的apps中
INSTALLED_APPS = [
...
'captcha',
]
- 更新数据库
makemigrations
migrate
- 配置TestProject下的url
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
url(r'^user/', include('users.urls', namespace='users')),
url(r'^captcha/', include('captcha.urls')),
]
这里可以回报一个错 PIL的一个错误,如果看过之前文章的应该没问题,我们需要安装一个叫做Pillow的东西。
这里我们要用到一个叫做Form的东西,根据文档我们可以看到
我们创建自己的Form然后,使用它,至于Form是什么我们后面讲。
OK我们来写自己的Form。
首先在app中创建我们的form.py文件,然后写入
from django import forms
from captcha.fields import CaptchaField
class RegisterForm(forms.Form):
email = forms.CharField(max_length=50)
password = forms.CharField(max_length=50)
captcha = CaptchaField()
如何使用呢?我们只需要在view中使用即可。
class RegisterView(View):
def get(self, request):
form = RegisterForm()
return render(request, 'register.html', {
'form': form,
})
def post(self, request):
form = RegisterForm(request.POST)
if form.is_valid():
return render(request, 'register.html', {})
else:
return render(request, 'register.html', {})
然后在我们的html中可以通过{{ xxx }}来获取到我们通过render()穿过去的值,这个值就是{}内的内容。
于是我们可以在html中修改验证码那个div
{{ form.captcha }}
这样我们运行看一下效果。
这样我们的验证码就有了。这个验证码是存在哪里的呢?
还记不记得我们在使用的时候,更新过一次数据库。我们看看里面多了什么。
首先我们多了一张表
其次呢,我们看看内容
不难发现,这个VNYI就是我们刚刚生成的这个验证码,这个hashkey有什么用呢,如果没有猜错,我们可以根据这个hashkey找到那张图片。�
OK,今天到这里,明天我们再来看一下注册。
这是学习时候总结的一套mindnode文件,有需要的大家可以来这里下载