国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄)

這篇具有很好參考價(jià)值的文章主要介紹了利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1.概述

目前市面上web項(xiàng)目大多數(shù)是由java語(yǔ)言開(kāi)發(fā)(結(jié)合spring框架),但這并不意味著只有java語(yǔ)言能夠開(kāi)發(fā)web項(xiàng)目,python語(yǔ)言、go語(yǔ)言同樣可以做到。本文將利用Django框架(由python語(yǔ)言開(kāi)發(fā)的web框架)來(lái)搭建一個(gè)簡(jiǎn)單的web項(xiàng)目,并實(shí)現(xiàn)簡(jiǎn)單登錄功能。

2.實(shí)現(xiàn)過(guò)程

2.1 Django框架簡(jiǎn)介

2.1.1 Django框架優(yōu)點(diǎn)

Django遵循MVC(Model-View-Controller)設(shè)計(jì)模式,提供了許多較為強(qiáng)大和便捷的工具來(lái)幫助開(kāi)發(fā)。它的優(yōu)勢(shì)主要體現(xiàn)在以下幾個(gè)方面:

  • 易于擴(kuò)展:Django框架提供豐富的插件和模塊,可以輕松地進(jìn)行擴(kuò)展和定制,例如:Django Fluent Dashboard、Python social auth等;
  • 安全性較高:Django框架內(nèi)置了XSS(跨站點(diǎn)腳本)防護(hù)、CSRF(跨站點(diǎn)請(qǐng)求偽造)保護(hù)、密碼哈希加密等;
  • 模塊獨(dú)立化:Django框架基于松耦合的設(shè)計(jì)原則,內(nèi)部高度模塊化,不同的模塊可以獨(dú)立編寫(xiě)、調(diào)測(cè),極大地提高編寫(xiě)和測(cè)試的靈活性;
  • 自帶后臺(tái):Django框架自帶了一個(gè)豐富的后臺(tái)管理系統(tǒng),可以輕松實(shí)現(xiàn)一些內(nèi)容管理;
  • 內(nèi)置ORM框架:內(nèi)置ORM,簡(jiǎn)單幾行代碼就可以連接數(shù)據(jù)庫(kù),并執(zhí)行sql語(yǔ)句。

2.1.2 Django Web框架基礎(chǔ)組件

Django的組件主要分為四個(gè)部分,模型(Model)、視圖(View)、模版(Template)、路由(URLconf),具體解釋如下:

  • 模型(Model):主要負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和操作,和MVC中M層作用一致;
  • 視圖(View):負(fù)責(zé)處理HTTP請(qǐng)求并返回HTTP相應(yīng),和MVC中的V層作用一致;
  • 模板(Template):負(fù)責(zé)渲染數(shù)據(jù)并生成HTML頁(yè)面展示,類(lèi)似于MVC中的C層;
  • URL路由(URLconf):負(fù)責(zé)將HTTP請(qǐng)求分發(fā)給相應(yīng)的視圖函數(shù)。

2.1.3 Django項(xiàng)目目錄

  1. urls.py:網(wǎng)址入口,關(guān)聯(lián)到對(duì)應(yīng)的views.py中的一個(gè)函數(shù)(或generic類(lèi)),訪問(wèn)網(wǎng)址就對(duì)應(yīng)一個(gè)函數(shù)。

  2. views.py:處理用戶發(fā)出的請(qǐng)求,與urls.py對(duì)應(yīng), 通過(guò)渲染templates中的網(wǎng)頁(yè)可以將顯示內(nèi)容,如登陸后的用戶名,用戶請(qǐng)求的數(shù)據(jù)等輸出到網(wǎng)頁(yè)。

  3. models.py:與數(shù)據(jù)庫(kù)操作相關(guān),存入或讀取數(shù)據(jù)時(shí)用到,用不到數(shù)據(jù)庫(kù)時(shí)可以不使用。

  4. forms.py:表單,用戶在瀏覽器上輸入數(shù)據(jù)提交,對(duì)數(shù)據(jù)的驗(yàn)證工作以及輸入框的生成等工作,也可以不使用。

  5. templates文件夾:views.py中的函數(shù)渲染templates中的html模板,得到動(dòng)態(tài)內(nèi)容的網(wǎng)頁(yè),可以用緩存來(lái)提高速度。

  6. admin.py:后臺(tái),可以用很少的代碼就擁有一個(gè)強(qiáng)大的后臺(tái)。

  7. settings.py:Django 的配置文件,如 DEBUG 的開(kāi)關(guān),靜態(tài)文件的位置等。

2.2 搭建web項(xiàng)目

2.2.1 安裝django

常用pip指令進(jìn)行安裝,如下:

pip install django

由于國(guó)內(nèi)有墻,可以指定一些國(guó)內(nèi)源即可:

pip install django -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

安裝完成后,可以通過(guò)以下命令來(lái)驗(yàn)證是否成功安裝:

django-admin version

如果出現(xiàn)版本信息,則表明安裝成功,如下:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django

2.2.2 創(chuàng)建項(xiàng)目

利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django

創(chuàng)建成功后目錄結(jié)構(gòu)如下:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django

setting:項(xiàng)目的配置文件,可以配置APP、數(shù)據(jù)庫(kù)、中間件、模版等諸多信息;
urls:路由分發(fā)配置;
init:?jiǎn)?dòng)文件,會(huì)配置一些特殊信息;
manage:項(xiàng)目的管理文件;
wsgi:web服務(wù)器和Django交互的入口。

2.2.2 運(yùn)行測(cè)試

1.利用以下指令啟動(dòng)項(xiàng)目

python manage.py runserver

在控制臺(tái)中運(yùn)行上述指令,啟動(dòng)成功后控制臺(tái)會(huì)輸出以下內(nèi)容:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django
訪問(wèn)地址http://127.0.0.1:8000,會(huì)出現(xiàn)以下界面:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django

2.3 開(kāi)發(fā)登錄模塊

2.3.1 創(chuàng)建項(xiàng)目

通過(guò)以下指令來(lái)創(chuàng)建python web項(xiàng)目,用于實(shí)現(xiàn)登錄模塊創(chuàng)建:

python manage.py startapp system

上述指令中的system就是登錄模塊名稱(chēng)。

2.3.2 注冊(cè)應(yīng)用程序

在根目錄的setting.py文件中,將上述登錄模塊添加至INSTALLED_APPS 列表中,如下:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'system'
]

2.3.3 配置連接數(shù)據(jù)庫(kù)

本文測(cè)試所使用的數(shù)據(jù)庫(kù)為MySQL,在根目錄的setting.py文件中,在DATABASES中配置MySQL連接信息,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'HOST': '128.71.104.132',
        'PORT': '3306',
        'USER': 'root',
        'PASSWORD': '123456'
    }
}

同時(shí)在根目錄的_init_.py文件中添加如下配置,否則在啟動(dòng)時(shí)會(huì)報(bào)一些連接異常:

import pymysql
pymysql.install_as_MySQLdb()

2.3.4 定義模型

在Django 中,數(shù)據(jù)模型中使用Python類(lèi)來(lái)定義,我們需要在應(yīng)用程序(system)的 models.py 文件中定義數(shù)據(jù)模型,本文以用戶Account類(lèi)來(lái)定義:

 # Create your models here.
class Account(models.Model):
    password = models.CharField(max_length=200)
    name = models.CharField(max_length=20)
    email = models.CharField(max_length=20)
    mobile = models.CharField(max_length=20)
    id = models.IntegerField(primary_key=True)

上述代碼中定義了一個(gè)Account數(shù)據(jù)模型,包含id,mobile,email,name,password等屬性,max_length指定的是最大長(zhǎng)度。建立完成數(shù)據(jù)模型后,需要生成對(duì)應(yīng)表到數(shù)據(jù)庫(kù)中,運(yùn)行以下指令:

#指令1
python manage.py makemigrations
 
#指令2
python manage.py migrate

運(yùn)行指令1會(huì)生成一個(gè)新的遷移文件夾migrations,將模型映射到數(shù)據(jù)庫(kù)的文件將會(huì)被放在這個(gè)文件夾下。如下圖所示:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django
運(yùn)行指令2會(huì)將模型信息映射到數(shù)據(jù)庫(kù)中并生成表。

2.3.5 編寫(xiě)視圖函數(shù)

在 Django 中,視圖函數(shù)用于處理 HTTP 請(qǐng)求并生成 HTTP 響應(yīng)。因此在登錄模塊的views.py文件中,編寫(xiě)如下視圖函數(shù):

from django.shortcuts import render, HttpResponse, redirect, reverse
from system.models import Account


def login(request):
    if request.method == 'POST':
        print("進(jìn)入頁(yè)面")
        name = request.POST['username']
        password = request.POST['password']
        print(name+":"+password)
        #根據(jù)name查詢數(shù)據(jù)庫(kù),獲取列表中第一個(gè)元素
        corr_user = Account.objects.filter(name=name).first()
        print(dir(corr_user))
        print("獲取到信息")
        if password == corr_user.password:
            print('登錄成功')
            return HttpResponse('登錄成功')

    return render(request, './system/login.html')


def logon(request):
    return HttpResponse('logon')


def logout(request):
    return redirect(reverse('login'))


def index(request):
    print("進(jìn)入index")
    return redirect(reverse('login'))

在上面的例子中,我們定義了名為 login、logon、logout 、index的視圖函數(shù)。在login函數(shù)中,我們校驗(yàn)了賬號(hào)和密碼信息,如果成功則返回登錄成功頁(yè)面,否則重新返回登錄頁(yè)面。

2.3.6 創(chuàng)建html登錄頁(yè)面

定義一個(gè)登錄頁(yè)面,包含登錄賬號(hào)和密碼等字段,該html放置在template文件夾下,如下所示:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title> 登陸 </title>
</head>
<body>
<div class="demo form-bg">
    <div class="container">
        <div class="row">
            <div class="col-md-offset-4 col-md-4 col-sm-offset-3 col-sm-6">
                <form class="form-horizontal" action="{% url 'login' %}" method="post">
                    <div class="heading">登陸</div>
                    <div class="form-group">
                        <i class="fa fa-user"></i><input required name="username" type="text"
                                                         class="form-control" placeholder="Username"
                                                         id="username">
                    </div>
                    <div class="form-group">
                        <i class="fa fa-lock"></i><input required name="password" type="password"
                                                         class="form-control" placeholder="password"/>
                    </div>
                    <div class="form-group">
                        <div class="form_btn">
                            <button type="submit">登錄</button>
                        </div>
                    </div>
                </form>
            </div>
        </div>
    </div>
</div>
</body>
</html>

2.3.7 配置URL

在登錄模塊的urls.py文件中定義URL映射信息,具體如下:

from system.views import logout, logon, login
from django.urls import path

urlpatterns = [
    path('login/', login, name='login'),
    path('logon/', logon, name='logon'),
    path('logout/', logout, name='logout'),
]

我們分別將login、logon和logout映射到對(duì)應(yīng)處理函數(shù)中。

2.3.8 測(cè)試驗(yàn)證

利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django
正確輸入賬號(hào)和密碼信息后會(huì)出現(xiàn)以下頁(yè)面:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django
同時(shí)控制臺(tái)會(huì)打印如下信息:
利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄),python,django

2.3.9 注意事項(xiàng)

在同一臺(tái)機(jī)器上啟動(dòng)項(xiàng)目,由前端直接訪問(wèn)python項(xiàng)目可能會(huì)出現(xiàn)跨域問(wèn)題,因此需要添加如下配置:

ALLOWED_HOSTS = ['*']
# DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
CSRF_TRUSTED_ORIGINS = ['http://127.0.0.1']

3.小結(jié)

1.本文利用Django創(chuàng)建了一個(gè)python web項(xiàng)目,用于驗(yàn)證Django框架的便捷性,功能較為簡(jiǎn)單,并發(fā)和安全等相關(guān)性能需加強(qiáng);
2.本文登錄案例僅作為演示,需要進(jìn)一步豐富各類(lèi)入?yún)⑿r?yàn),網(wǎng)關(guān)驗(yàn)證用戶合法性等。

4.參考文獻(xiàn)

1.https://www.cnblogs.com/fuchangjiang/p/17854807.html
2.https://www.djangoproject.com/

5.附錄

https://gitee.com/Marinc/python-web.git文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-817625.html

到了這里,關(guān)于利用Django搭建python web項(xiàng)目(簡(jiǎn)單登錄)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Django用戶認(rèn)證: 利用Django Auth模塊實(shí)現(xiàn)用戶注冊(cè)、登錄與登出

    用戶登錄注冊(cè)屬于用戶認(rèn)證的一部分,Django內(nèi)置了一套用戶認(rèn)證體系,使用起來(lái)比較方便,而且支持用戶定制和拓展,足以滿足任何復(fù)雜的業(yè)務(wù)需求。 Django框架中,用戶權(quán)限管理被劃分為三個(gè)層次: 用戶 :系統(tǒng)使用者,擁有自己的權(quán)限??杀灰粋€(gè)或多個(gè)用戶組包含。 用戶組

    2023年04月20日
    瀏覽(26)
  • Django學(xué)習(xí)記錄:初步認(rèn)識(shí)django以及實(shí)現(xiàn)了簡(jiǎn)單的網(wǎng)頁(yè)登錄頁(yè)面的前后端開(kāi)發(fā)

    Django學(xué)習(xí)記錄:初步認(rèn)識(shí)django以及實(shí)現(xiàn)了簡(jiǎn)單的網(wǎng)頁(yè)登錄頁(yè)面的前后端開(kāi)發(fā)

    1、可以先刪去template文件夾,并在setting里面刪掉這一行 2、在pycharm中創(chuàng)建app: 3、啟動(dòng)app:編寫(xiě)URL與視圖函數(shù)關(guān)系【urls.py】 ? 編寫(xiě)視圖函數(shù)【views.py】 ? 啟動(dòng)pycharm項(xiàng)目 4、引用靜態(tài)文件 其中有兩個(gè)文件的導(dǎo)入:(jquery和bootstrap) jquery:https://code.jquery.com/jquery-3.6.0.min.js 可

    2024年02月14日
    瀏覽(25)
  • Django學(xué)習(xí)筆記-Web端授權(quán)AcWing一鍵登錄

    Django學(xué)習(xí)筆記-Web端授權(quán)AcWing一鍵登錄

    筆記內(nèi)容轉(zhuǎn)載自 AcWing 的 Django 框架課講義,課程鏈接:AcWing Django 框架課。 Redis 為內(nèi)存數(shù)據(jù)庫(kù),目前我們使用的是 Django 自帶的數(shù)據(jù)庫(kù) SQLite,且能夠很容易地遷移到 MySQL,這些數(shù)據(jù)庫(kù)的效率不如 Redis,其特點(diǎn)為: Redis 存的內(nèi)容為 key, value 對(duì),而其它數(shù)據(jù)庫(kù)存的是若干張表,

    2024年02月11日
    瀏覽(17)
  • 使用 Django 構(gòu)建簡(jiǎn)單 Web 應(yīng)用

    使用 Django 構(gòu)建簡(jiǎn)單 Web 應(yīng)用

    當(dāng)我們?cè)谑褂肈jango構(gòu)建Web應(yīng)用時(shí),通常將會(huì)涉及到多個(gè)步驟,從創(chuàng)建項(xiàng)目到編寫(xiě)視圖、模板、模型,再到配置URL路由和靜態(tài)文件,最后部署到服務(wù)器上。所以說(shuō)如果有一個(gè)環(huán)節(jié)出了問(wèn)題,都是非常棘手的,下面就是我們經(jīng)常遇到的問(wèn)題可以看看。 1、問(wèn)題背景 開(kāi)發(fā)者正在使用

    2024年04月16日
    瀏覽(19)
  • Django(二)精美博客搭建(1)實(shí)現(xiàn)登錄/注冊(cè)功能

    Django(二)精美博客搭建(1)實(shí)現(xiàn)登錄/注冊(cè)功能

    之前我們用 Django框架 做了一個(gè)很簡(jiǎn)單的個(gè)人博客搭建,不論是頁(yè)面還是功能都很粗糙 所以從這篇開(kāi)始我打算做一個(gè)比較完整的【個(gè)人博客網(wǎng)站】,可能會(huì)分好幾篇博客來(lái)講述 等所有功能完善的差不多后,再考慮上傳github 那本篇呢,我們主要實(shí)現(xiàn)博客的基礎(chǔ)框架搭建,以及

    2023年04月19日
    瀏覽(20)
  • Django的Rest framework搭建自定義授權(quán)登錄

    提示:閱讀本章之前,請(qǐng)先閱讀目錄 之前的文章有寫(xiě)過(guò)通過(guò)jwt認(rèn)證的文章,今天這一篇是通過(guò)自定義用戶認(rèn)證的; 使用場(chǎng)景:有些API需要用戶登錄成功之后,才能訪問(wèn);有些無(wú)需登錄就能訪問(wèn) 解決方法:創(chuàng)建兩張表,一張用戶表,一張token表,保存用戶登錄成功后生產(chǎn)的t

    2024年02月15日
    瀏覽(20)
  • Web實(shí)戰(zhàn)丨基于Django與HTML的用戶登錄驗(yàn)證系統(tǒng)

    Web實(shí)戰(zhàn)丨基于Django與HTML的用戶登錄驗(yàn)證系統(tǒng)

    本期內(nèi)容:基于Django與HTML的簡(jiǎn)單登錄驗(yàn)證系統(tǒng)。 項(xiàng)目需求:Python+Django 項(xiàng)目下載地址:https://download.csdn.net/download/m0_68111267/88727183 登錄系統(tǒng)在我們的日常生活中隨處可見(jiàn),比如當(dāng)我們使用QQ、微信等社交軟件時(shí),都需要先輸入自己的賬號(hào)密碼進(jìn)行登錄,本文博主將帶著大家用

    2024年01月25日
    瀏覽(21)
  • Django項(xiàng)目框架搭建,快速入門(mén)Django

    Django項(xiàng)目框架搭建,快速入門(mén)Django

    Django提供了 django-admin 這個(gè)功能強(qiáng)大的命令行管理工具,其中最重要的就是可以利用它來(lái)完成項(xiàng)目的創(chuàng)建 startproject是 django-admin 的子命令,用于創(chuàng)建項(xiàng)目。這里,使用這個(gè)子命令創(chuàng)建了djangoy項(xiàng)目 項(xiàng)目的骨架如下: 啟動(dòng)django項(xiàng)目: 看到如下界面,代表一個(gè)初始的django項(xiàng)目創(chuàng)建

    2024年02月03日
    瀏覽(27)
  • Django web 開(kāi)發(fā)(四) - Django項(xiàng)目實(shí)踐(四)-用戶管理

    Django web 開(kāi)發(fā)(四) - Django項(xiàng)目實(shí)踐(四)-用戶管理

    向用戶數(shù)據(jù)表中插入幾行數(shù)據(jù)方便后面進(jìn)行測(cè)試 修改 myproject/myproject/urls.py 修改 myproject/employee_management/views.py 新建 myproject/employee_management/templates/user_list.html 注意: HTML 中獲取數(shù)據(jù)的方式與 Python 中有些不同 例如: 1.HTML中引入函數(shù)不能帶括號(hào), obj.get_gender_display() 2.日期類(lèi)型轉(zhuǎn)字

    2023年04月22日
    瀏覽(19)
  • Django學(xué)習(xí)(1):Django項(xiàng)目的初步創(chuàng)建與簡(jiǎn)單配置

    Django學(xué)習(xí)(1):Django項(xiàng)目的初步創(chuàng)建與簡(jiǎn)單配置

    ? ? ? ? 每一個(gè)python項(xiàng)目都創(chuàng)建一個(gè)新的虛擬環(huán)境有助于我們對(duì)于項(xiàng)目與其所對(duì)應(yīng)包的管理等。 這里使用pycharm工具進(jìn)行操作演示。 ? ? ? ? pycharm左上方找到菜單——File——New Project。 ? ? ? ? 點(diǎn)擊后彈出新建項(xiàng)目窗口進(jìn)行配置 Location:項(xiàng)目總路徑,選擇一個(gè)空的文件夾。

    2024年04月23日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包