Django写一个登录注册---002MVT的VT初始设计

本文详细介绍了如何在Django项目中初始化视图和HTML模板,涵盖了函数视图、类视图和include视图的应用,并通过实例展示了如何设置URL路由和创建基本的登录、注销、注册功能。

书接上文,前情回顾一下,上节我们编写了MVT中的M数据库设计,给用户信息设计了一张表User。
这节那就进行后面VT两个的初始化操作,比如写写视图和HTML模板。
视图:

根据项目名称hylogin下的url.py文件中,我们观察到这样一段代码,他是在告诉我们写视图中的URL导航存在下面三种方式去操作。

Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))

为了将这三种视图我们都使用到,所以我都将这三种都使用到,如下所示:
第一:直接使用函数视图。我们将首页和登录页设计函数视图表示,在此之前需要导包,也就是导入login包中的view视图《from login import views》

from django.contrib import admin
from django.urls import path,include
from login import views
from login.views import Logout
urlpatterns = [
    path('admin/', admin.site.urls),
    path('index/',views.index,name='index'),
    path('login/',views.login,name='login'),
    path('register/',include('login.urls')),#二级目录
    # path('logout/', views.logout, name='logout'),
    path('logout/', Logout.as_view(),name='logout')
]

在这里插入图片描述

第二:使用类视图
上面我们将登出设计为类视图,导入的包是《from login.views import Logout》也就是将login app中的views视图里面设计的class类导入
第三:使用include视图
上面将注册用于include视图,导入的包是《from django.urls import path,include》,include是根据二级路由设计的,现在我们再去login app中加入一个urls.py文件,然后将下面代码输入。

from django.urls import path,include
from login import views

app_name = 'login'
urlpatterns = [
    path('',views.register,name='register')
]

如果想要判断自己写的url是否可以正常跳转,我们可以用下面方法去初判一下,按住ctrl,然后点击url中的关键字去查看是否可以跳转
在这里插入图片描述
接下来我们去写视图函数和类吧,为了能够在浏览器上查看到具体的效果,我们先返回一个字符串展示。
我们进入到login 的view.py中写代码了。

from django.shortcuts import render,redirect
from django.http import HttpResponse
from django.views import View


# Create your views here.
# 退出登录,采用类视图表示,使用类视图的作用是可以用不同的实例方法来响应不同的HTTp请求,而不是在函数视图中用条件分支代码完成
# 常用于表单处理中更加方便
class Logout(View):
    '''
    这是作用于函数视图中表达的方式
        def logout(self,request):
        # return redirect("/login/")
        if request.method=="GET":
            return HttpResponse("hello logout")
    '''
    # 这是类试图的作用
    def get(self,request):
        return HttpResponse("hello logout")

# 首页
def index(request):
    # return render(request,"login/index.html")
    return HttpResponse("hello index")

# 登录页面
def login(request):
    # return render(request, "login/login.html")
    return HttpResponse("hello login")

# 注册页面
def register(request):
    # return render(request, "login/register.html")
    return HttpResponse("hello register")

上面定义的函数名需要与url中写的名字一一对应。比如首页我们在url也就是在urls.py中写的是《path(‘index/’,views.index,name=‘index’),》,所以在views.py中需要将函数名写成index。

注意哦,在include中我们不需要写def logout函数,具体可看代码中的注释有说明,这是django规定的。里面是写get或者post的请求方法。

判断url写的是否正确,我们也可以在urls.py中按住ctrl,然后点击对应的关键字,看看是否会跳转到对应的视图函数位置。如果写的不对,跳转会出问题的哦。

接下来在terminal终端输入命令《python manage.py runserver》启动项目,然后在浏览器输入《http://127.0.0.1:8000/index/》访问首页看看会访问什么。
在这里插入图片描述
你也可以去改变index,输入login看看是不是上面视图函数中return的字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值