成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

利用Django開發(fā)個小型商城(一)

RobinTang / 495人閱讀

摘要:利用開發(fā)個小型商城我們本期的教程是教大家如何利用開發(fā)一個小型的商城這里所說的小型商城只是功能上的簡樸。并于年月在許可證下發(fā)布。這套框架是以比利時的吉普賽爵士吉他手來命名的。是重量級選手中最有代表性的一位。

利用Django開發(fā)個小型商城

我們本期的教程是教大家如何利用Django開發(fā)一個小型的商城,這里所說的小型商城只是功能上的簡樸。

作者:黃志成(小黃)

作者博客:博客地址

前提
1.了解基本的Python3語法

2.會使用百度

這里我們不講最基礎(chǔ)的語法部分,如果沒有基礎(chǔ)的朋友,建議先了解基礎(chǔ).

當然對有基礎(chǔ)的朋友,也有要求就是會使用百度來解決問題.為什么這么說?

很多時候新手遇到的問題 90% 都是在百度上能搜索到的. 遇到問題的第一時刻應該仔細思考,然后在去百度,如果百度上的答案不能理解,要么是你的基本功還是不扎實,另外就是答案是不對,或者沒有表達清楚,這個時候 你可以去一些編程社區(qū)去求助.

Django 簡介

1.Django是什么?

Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,模板T和視圖V。它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,即是CMS(內(nèi)容管理系統(tǒng))軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。

Django是重量級選手中最有代表性的一位。許多成功的網(wǎng)站和APP都基于Django

當然python的web框架有很多 例如: Tornado、flask、web2py 等等.

各有優(yōu)點.像Django就是一個重量級的框架,他將很多功能都集成好了,開發(fā)很便捷.適合入門學習.

下面用一張圖來說明什么是Django:

這部電影相信大家都看過,這是傳說中要你命3000.我們的Django框架和它一樣.是一個很全的工具.用Django 我們可以快速開發(fā)出一個web APP.

2.MTV又是什么?

Model(模型)用于封裝與應用程序的業(yè)務邏輯相關(guān)的數(shù)據(jù)及對數(shù)據(jù)的處理方法,是Web應用程序中用于處理應用程序的數(shù)據(jù)邏輯的部分,Model只提供功能性的接口,通過這些接口可以獲取Model的所有功能。白話說,這個模塊就是Web框架和數(shù)據(jù)庫的交互層。

Template(模板)將數(shù)據(jù)與HTML語言結(jié)合起來的引擎

View(視圖): 負責實際的業(yè)務邏輯實現(xiàn)

Django的安裝

Django是python編寫的web框架,依賴于python 這里我們使用python3.6,使用的Django版本是2.0 ,這里2.0版本不在兼容python2.7

這里我們通過pip安裝Django

pip3 install django==2.0

這里指定安裝Django的2.0版本

安裝完成之后,如何驗證是否安裝成功呢? 這里我們通過pip查看已安裝的包

pip3 list

當然還有一種方法 ,在python環(huán)境下運行下面代碼獲取django的版本號.

>>> import django
>>> django.get_version()
"2.0"

django的安裝其實很簡單.下面我們將一步一步的創(chuàng)建一個商城項目.

Django的項目創(chuàng)建

在我們安裝好Django之后,我們的環(huán)境變量中會有一個 django-admin

在命令行下面輸入 django-admin help 如果正常的話 會出現(xiàn)如下界面:

既然一切正常,我們就開始創(chuàng)建第一個Django的項目吧.

通過下面的命令就可以創(chuàng)建一個 名稱為 fresh的項目

django-admin startproject fresh

下面是通過此命令創(chuàng)建的目錄結(jié)構(gòu).

├── fresh
│   ├── __init__.py
│   ├── settings.py (項目配置文件)
│   ├── urls.py (項目路由)
│   └── wsgi.py (python網(wǎng)關(guān))
├── manage.py (腳手架)
├── db.sqlite3 (數(shù)據(jù)庫)
└── templates (模板目錄)


當然我們也可以通過IDE創(chuàng)建Django項目 (這里我們使用PyCharm)

點擊 Create 就能創(chuàng)建出一個Django的項目,其實IDE也是底層調(diào)用 django-admin的方法創(chuàng)建項目.創(chuàng)建出的文件都是一樣的.

這個時候我們運行一下我們項目試試,可以通過內(nèi)置的服務器啟動項目

python3 manage.py runserver 8000

這就啟動成功了. 我們 打開瀏覽器訪問 http://127.0.0.1:8000/

顯示這樣的,我們就很順利的創(chuàng)建了一個項目.當然啟動時報出的紅色錯誤信息,我們會在后面來和大家解釋.

在創(chuàng)建第一個應用之前我們先了解一下 Django的配置文件 **settings
.py**

在Django中默認使用的數(shù)據(jù)庫是sqlite.在實際的業(yè)務中并不常用,這里我們使用mysql.當然如果對數(shù)據(jù)庫這里不太了解的同學,建議先去學習一下數(shù)據(jù)庫相關(guān)的知識.

那如何將數(shù)據(jù)庫引擎換成mysql呢?

# 這段代碼在 settings.py的 76行
DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.sqlite3",
        "NAME": os.path.join(BASE_DIR, "db.sqlite3"),
    }
}

將這段改為:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "HOST": "127.0.0.1",
        "PORT":"3306",
        "USER":"root",
        "PASSWORD":"root",
        "NAME":"fresh",
    }
}

我們試著運行一下,可能會報一個錯誤

django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module.
Did you install mysqlclient?

因為在 Django 中, 連接數(shù)據(jù)庫時使用的是 MySQLdb 庫,這在與 python3 的合作中就會報上面的錯誤了.

如何解決呢?

1.在 python3 中,改變了連接庫,改為了 pymysql 庫,使用pip install pymysql 進行安裝

2.然后在 __init__.py 文件中添加以下代碼即可

import pymysql
pymysql.install_as_MySQLdb()


Django支持的數(shù)據(jù)庫有這幾種:

"django.db.backends.postgresql"
"django.db.backends.mysql"
"django.db.backends.sqlite3"
"django.db.backends.oracle"

這節(jié)的最后說下我們的靜態(tài)頁面和靜態(tài)文件(CSS,JS,IMG)存放位置吧.

在setting.py的最后有如下代碼.告訴我們文件存放位置.

STATIC_URL = "/static/"
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

TEMPLATE_DIRS = (os.path.join(BASE_DIR,  "templates"),)

靜態(tài)文件 存在 static 目錄下. 可能在創(chuàng)建項目的時候 沒有自動幫我們創(chuàng)建static文件夾,需要自己手動創(chuàng)建一下,創(chuàng)建在和manage.py同級目錄。

靜態(tài)頁面存放在 templates 下.

創(chuàng)建第一個應用

對于很多初學的同學,就有一個疑問? 項目和應用有著什么樣的關(guān)聯(lián)和區(qū)別.

一個app實現(xiàn)某個功能或者模塊,比如用戶模塊,訂單模塊;

一個project是配置文件和多個app的集合,這些app組合成整個站點;

一個project可以包含多個app;

我們來創(chuàng)建第一應用:用戶模塊 ,用于用戶的登錄,注冊。

python3 manage.py startapp user

創(chuàng)建完應用,我們來設(shè)計模型類。

在user文件夾下有一個models.py的文件,這里就是模型類.在這里我們先定義我們的字段.

class User(models.Model):
    uid = models.AutoField(primary_key=True)
    uname = models.CharField(max_length=20)
    upwd = models.CharField(max_length=32)
    create_at = models.DateField()
    update_at = models.DateField()

定義完字段后,就可以進行遷移了.遷移方式在下方寫著.

#創(chuàng)建數(shù)據(jù)遷移文件
python3 manage.py makemigrations

#如果出現(xiàn) No changes detected ,可能是你沒有把應用添加到 setting.py中的 INSTALLED_APPS , 應用名是 "user"

#生成
python3 manage.py migrate

生成表后在數(shù)據(jù)庫中一看.表名是:user_user 這和我們想的不太一樣.

那如何修改成user呢.

#在User類中添加 Meta類
class User(models.Model):
    uid = models.AutoField(primary_key=True)
    uname = models.CharField(max_length=20)
    upwd = models.CharField(max_length=32)
    create_at = models.DateField()
    update_at = models.DateField()

    class Meta:
        db_table = "user"

第一步:
進入數(shù)據(jù)庫,找到django_migrations的表,刪除該app名字對應的所有記錄。

第二步:

刪除該app名字下的migrations下的除了__init__.py之外的文件。

第三步:

重新運行遷移命令.

數(shù)據(jù)表創(chuàng)建好了,現(xiàn)在需要我們的頁面了,Django如何載入頁面呢?

在view.py文件下就可以創(chuàng)建咱們的視圖邏輯了.

這里咱們使用類的方式來寫,當然也可以用函數(shù)的方式來寫 這里我更推薦使用類的方式.

用戶訪問瀏覽器,一般兩種方式,get獲取網(wǎng)頁和post提交數(shù)據(jù),get也可以提交數(shù)據(jù),以一種明文形式顯示在url中,post提交的數(shù)據(jù)url中不顯示,一種安全的數(shù)據(jù)提交方式,get方式提交數(shù)據(jù)一般應用于一些排序方式和類別過濾中,post用于用戶提交的表單數(shù)據(jù),比較隱私的數(shù)據(jù),get方式提交數(shù)據(jù)為小數(shù)據(jù)信息,而post方式提交數(shù)據(jù)可以是大數(shù)據(jù)信息

導入View基類

寫一個view類,繼承View基類,下面有兩個方法,get和post方法

在urls中通過類方法.as_view() 方式 調(diào)用這個view類

下面給出代碼實例:

import json
from django.shortcuts import render,HttpResponse
from django.views.generic.base import View

# Create your views here.

class LoginView(View):
    def get(self,request):
        # 渲染登錄頁面
        return render(request,"user/login.html")

    def post(self,request):
        # 登錄邏輯
        return HttpResponse(json.dumps(request.POST))

class RegisterView(View):
    def get(self,request):
        return render(request,"user/register.html")

這里先寫登錄頁面和注冊頁面. 登錄的post方法中 在頁面先直接輸出 POST 的數(shù)據(jù).

由于django會有CSRF驗證所以我們在提交表單的時候要構(gòu)建一個csrf的token,這里django提供了方法讓我們直接構(gòu)建出一條token

{% csrf_token %}
輸入錯誤
輸入錯誤
忘記密碼

這里說一下 render 和 HttpResponse函數(shù)的作用.

render是渲染變量到模板中,render的第一個參數(shù)是request 第二個參數(shù)是模板路徑 第三個參數(shù)context是要傳入文件中用于渲染呈現(xiàn)的數(shù)據(jù), 默認是字典格式

HttpResponse是不調(diào)用模板,直接返回數(shù)據(jù)

最后我們需要添加路由, 路由是關(guān)聯(lián)url及其處理函數(shù)關(guān)系的過程

在 user 模塊下 新建urls.py文件

from django.urls import path
from user.views import LoginView,RegisterView

urlpatterns = [
    path(r"user_login/",LoginView.as_view(),name="login"),
    path(r"user_register/",RegisterView.as_view(),name="register")
]

最后在項目的urls.py文件中引入 user模塊的路由

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path("admin/", admin.site.urls),
    path("",include("user.urls")),
]

下一節(jié),我們開始講解django的模型,來完善我們的用戶模塊.實現(xiàn)用戶登錄注冊的功能。

希望喜歡的朋友們 給一個贊~

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/41557.html

相關(guān)文章

  • Python測試開發(fā)Django和Flask框架的區(qū)別

    摘要:在談中框架和框架的區(qū)別之前,我們需要先探討如下幾個問題。通過大數(shù)據(jù)統(tǒng)計分析全球著名的網(wǎng)站對和這兩個框架的調(diào)查分析。從全球著名的代碼托管平臺上的和數(shù)量上分別為,分別為。 在談Python中Django框架和Flask框架的區(qū)別之前,我們需要先探討如下幾個問題。 一、為什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...

    B0B0 評論0 收藏0
  • Django3商城項目 從0到1 【五】商品信息模塊

    摘要:文章目錄商品列表頁邏輯代碼商品列表頁的數(shù)據(jù)渲染商品詳細頁實現(xiàn)商品收藏商品列表頁邏輯代碼的定義視圖函數(shù)商品列表獲取請求參數(shù)變量是商品搜索功能的關(guān)鍵字,它與模型的字段進行模糊匹配,因此查詢條件為。 ...

    Vixb 評論0 收藏0
  • Django3商城項目 從0到1 【四】數(shù)據(jù)渲染與展示

    摘要:文章目錄基礎(chǔ)模板設(shè)計首頁模板設(shè)計和的定義相應的視圖函數(shù)配置媒體資源的路由信息基礎(chǔ)模板設(shè)計在項目的文件夾新建文件該文件用于存放每個網(wǎng)頁頂部的代碼母嬰商城請輸入需要的商品 ...

    qiangdada 評論0 收藏0
  • 史上最詳細Python學習路線-從入門到精通,只需90天

    摘要:針對的初學者,從無到有的語言如何入門,主要包括了的簡介,如何下載,如何安裝,如何使用終端,等各種開發(fā)環(huán)境進行開發(fā),中的語法和基本知識概念和邏輯,以及繼續(xù)深入學習的方法。 ...

    gghyoo 評論0 收藏0
  • Hello django

    摘要:最近迷上了雖然本人是搞的,但是被的快速簡潔深深折服特此獻上本人與的之旅,見笑環(huán)境本文后續(xù)更新請查看開始創(chuàng)建項目打開終端命令,沒有消息就是好消息,此時已經(jīng)成功創(chuàng)建項目。 最近迷上了django(雖然本人是搞java的^_^),但是被django的快速、簡潔深深折服特此獻上本人與django的hello world之旅,見笑! 環(huán)境:MacOS+python2.7+Django 1.9.5...

    fsmStudy 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<