Osheep

时光不回头,当下最重要。

Django学习记录第四天—注册1

现在基本任何的网页都需要登录注册功能,今天看一下注册。
从这里开始,精彩的部分就来了。django也变得好玩多了 。

首先呢,创建static文件夹。来存放前段给的css,js,image等文件。
这是学习时候获取到的一份文件,有需要的大家可以来这里下载

OK,下载完成后导入到项目里面,然后我们就可以使用了,注意,html文件不要放到static里面哦,我们需要将html文件放入到template文件夹下。
大概是这样。

《Django学习记录第四天—注册1》

image.png
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.

《Django学习记录第四天—注册1》

urls.py

接下来我们需要求改我们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是干什么呢。我们来看一下官方文档

《Django学习记录第四天—注册1》

image.png

什么意思类,大概翻译一下,一个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进去看看。

《Django学习记录第四天—注册1》

image.png
《Django学习记录第四天—注册1》

image.png

是的可以返回一个Response。
到这之后基本就完成了,是不是很简单。我们看一下效果http://127.0.0.1:8000/user/register。
WTF!!!

《Django学习记录第四天—注册1》

这是啥 ?我在哪? css,js呢?
来到html文件看一下我们发现所有的css,image,js都是../开头主要还是美工是通过../来获取文件,但是这里我们的文件地址改了。我们要怎么做呢?
我们需要将所有的../换成{% static ” %} 然后将../后面的内容放到 ‘ ‘ 中。换完之后看一下效果。

《Django学习记录第四天—注册1》

image.png

恩 还不错,我们的界面算是完成了,接下来就是处理数据了。

我们可以看到注册有一个验证码的地方,我们来吧验证码先解决了。

验证码

然我们来到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的东西,根据文档我们可以看到

《Django学习记录第四天—注册1》

image.png

我们创建自己的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

<div class="form-group marb8 captcha1 ">
        <label>验&nbsp;证&nbsp;码</label>
        {{ form.captcha }}
</div>

这样我们运行看一下效果。

《Django学习记录第四天—注册1》

image.png

这样我们的验证码就有了。这个验证码是存在哪里的呢?
还记不记得我们在使用的时候,更新过一次数据库。我们看看里面多了什么。
首先我们多了一张表

《Django学习记录第四天—注册1》

image.png

其次呢,我们看看内容

《Django学习记录第四天—注册1》

image.png

不难发现,这个VNYI就是我们刚刚生成的这个验证码,这个hashkey有什么用呢,如果没有猜错,我们可以根据这个hashkey找到那张图片。

OK,今天到这里,明天我们再来看一下注册。

争取坚持30天
点赞