摘要:利用開發個小型商城我們本期的教程是教大家如何利用開發一個小型的商城這里所說的小型商城只是功能上的簡樸。并于年月在許可證下發布。這套框架是以比利時的吉普賽爵士吉他手來命名的。是重量級選手中最有代表性的一位。
利用Django開發個小型商城
我們本期的教程是教大家如何利用Django開發一個小型的商城,這里所說的小型商城只是功能上的簡樸。
作者:黃志成(小黃)
作者博客:博客地址
前提1.了解基本的Python3語法 2.會使用百度
這里我們不講最基礎的語法部分,如果沒有基礎的朋友,建議先了解基礎.
當然對有基礎的朋友,也有要求就是會使用百度來解決問題.為什么這么說?
很多時候新手遇到的問題 90% 都是在百度上能搜索到的. 遇到問題的第一時刻應該仔細思考,然后在去百度,如果百度上的答案不能理解,要么是你的基本功還是不扎實,另外就是答案是不對,或者沒有表達清楚,這個時候 你可以去一些編程社區去求助.
Django 簡介1.Django是什么?
Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,模板T和視圖V。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟件。并于2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。
Django是重量級選手中最有代表性的一位。許多成功的網站和APP都基于Django
當然python的web框架有很多 例如: Tornado、flask、web2py 等等.
各有優點.像Django就是一個重量級的框架,他將很多功能都集成好了,開發很便捷.適合入門學習.
下面用一張圖來說明什么是Django:
這部電影相信大家都看過,這是傳說中要你命3000.我們的Django框架和它一樣.是一個很全的工具.用Django 我們可以快速開發出一個web APP.
2.MTV又是什么?
Model(模型):用于封裝與應用程序的業務邏輯相關的數據及對數據的處理方法,是Web應用程序中用于處理應用程序的數據邏輯的部分,Model只提供功能性的接口,通過這些接口可以獲取Model的所有功能。白話說,這個模塊就是Web框架和數據庫的交互層。
Template(模板):將數據與HTML語言結合起來的引擎
View(視圖): 負責實際的業務邏輯實現
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環境下運行下面代碼獲取django的版本號.
>>> import django >>> django.get_version() "2.0"
django的安裝其實很簡單.下面我們將一步一步的創建一個商城項目.
Django的項目創建在我們安裝好Django之后,我們的環境變量中會有一個 django-admin
在命令行下面輸入 django-admin help 如果正常的話 會出現如下界面:
既然一切正常,我們就開始創建第一個Django的項目吧.
通過下面的命令就可以創建一個 名稱為 fresh的項目
django-admin startproject fresh
下面是通過此命令創建的目錄結構.
├── fresh │ ├── __init__.py │ ├── settings.py (項目配置文件) │ ├── urls.py (項目路由) │ └── wsgi.py (python網關) ├── manage.py (腳手架) ├── db.sqlite3 (數據庫) └── templates (模板目錄)
當然我們也可以通過IDE創建Django項目 (這里我們使用PyCharm)
點擊 Create 就能創建出一個Django的項目,其實IDE也是底層調用 django-admin的方法創建項目.創建出的文件都是一樣的.
這個時候我們運行一下我們項目試試,可以通過內置的服務器啟動項目
python3 manage.py runserver 8000
這就啟動成功了. 我們 打開瀏覽器訪問 http://127.0.0.1:8000/
顯示這樣的,我們就很順利的創建了一個項目.當然啟動時報出的紅色錯誤信息,我們會在后面來和大家解釋.
在創建第一個應用之前我們先了解一下 Django的配置文件 **settings
.py**
在Django中默認使用的數據庫是sqlite.在實際的業務中并不常用,這里我們使用mysql.當然如果對數據庫這里不太了解的同學,建議先去學習一下數據庫相關的知識.
那如何將數據庫引擎換成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 中, 連接數據庫時使用的是 MySQLdb 庫,這在與 python3 的合作中就會報上面的錯誤了.
如何解決呢?
1.在 python3 中,改變了連接庫,改為了 pymysql 庫,使用pip install pymysql 進行安裝
2.然后在 __init__.py 文件中添加以下代碼即可
import pymysql pymysql.install_as_MySQLdb()
Django支持的數據庫有這幾種:
"django.db.backends.postgresql" "django.db.backends.mysql" "django.db.backends.sqlite3" "django.db.backends.oracle"
這節的最后說下我們的靜態頁面和靜態文件(CSS,JS,IMG)存放位置吧.
在setting.py的最后有如下代碼.告訴我們文件存放位置.
STATIC_URL = "/static/" STATICFILES_DIRS = [ os.path.join(BASE_DIR, "static"), ] TEMPLATE_DIRS = (os.path.join(BASE_DIR, "templates"),)
靜態文件 存在 static 目錄下. 可能在創建項目的時候 沒有自動幫我們創建static文件夾,需要自己手動創建一下,創建在和manage.py同級目錄。
靜態頁面存放在 templates 下.
創建第一個應用對于很多初學的同學,就有一個疑問? 項目和應用有著什么樣的關聯和區別.
一個app實現某個功能或者模塊,比如用戶模塊,訂單模塊;
一個project是配置文件和多個app的集合,這些app組合成整個站點;
一個project可以包含多個app;
我們來創建第一應用:用戶模塊 ,用于用戶的登錄,注冊。
python3 manage.py startapp user
創建完應用,我們來設計模型類。
在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()
定義完字段后,就可以進行遷移了.遷移方式在下方寫著.
#創建數據遷移文件 python3 manage.py makemigrations #如果出現 No changes detected ,可能是你沒有把應用添加到 setting.py中的 INSTALLED_APPS , 應用名是 "user" #生成 python3 manage.py migrate
生成表后在數據庫中一看.表名是: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"
第一步:
進入數據庫,找到django_migrations的表,刪除該app名字對應的所有記錄。
第二步:
刪除該app名字下的migrations下的除了__init__.py之外的文件。
第三步:
重新運行遷移命令.
數據表創建好了,現在需要我們的頁面了,Django如何載入頁面呢?
在view.py文件下就可以創建咱們的視圖邏輯了.
這里咱們使用類的方式來寫,當然也可以用函數的方式來寫 這里我更推薦使用類的方式.
用戶訪問瀏覽器,一般兩種方式,get獲取網頁和post提交數據,get也可以提交數據,以一種明文形式顯示在url中,post提交的數據url中不顯示,一種安全的數據提交方式,get方式提交數據一般應用于一些排序方式和類別過濾中,post用于用戶提交的表單數據,比較隱私的數據,get方式提交數據為小數據信息,而post方式提交數據可以是大數據信息
導入View基類
寫一個view類,繼承View基類,下面有兩個方法,get和post方法
在urls中通過類方法.as_view() 方式 調用這個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 的數據.
由于django會有CSRF驗證所以我們在提交表單的時候要構建一個csrf的token,這里django提供了方法讓我們直接構建出一條token
這里說一下 render 和 HttpResponse函數的作用.
render是渲染變量到模板中,render的第一個參數是request 第二個參數是模板路徑 第三個參數context是要傳入文件中用于渲染呈現的數據, 默認是字典格式
HttpResponse是不調用模板,直接返回數據
最后我們需要添加路由, 路由是關聯url及其處理函數關系的過程
在 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")), ]
下一節,我們開始講解django的模型,來完善我們的用戶模塊.實現用戶登錄注冊的功能。
希望喜歡的朋友們 給一個贊~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41557.html
摘要:在談中框架和框架的區別之前,我們需要先探討如下幾個問題。通過大數據統計分析全球著名的網站對和這兩個框架的調查分析。從全球著名的代碼托管平臺上的和數量上分別為,分別為。 在談Python中Django框架和Flask框架的區別之前,我們需要先探討如下幾個問題。 一、為什么要使用框架? showImg(https://segmentfault.com/img/remote/14600000...
摘要:文章目錄商品列表頁邏輯代碼商品列表頁的數據渲染商品詳細頁實現商品收藏商品列表頁邏輯代碼的定義視圖函數商品列表獲取請求參數變量是商品搜索功能的關鍵字,它與模型的字段進行模糊匹配,因此查詢條件為。 ...
摘要:文章目錄基礎模板設計首頁模板設計和的定義相應的視圖函數配置媒體資源的路由信息基礎模板設計在項目的文件夾新建文件該文件用于存放每個網頁頂部的代碼母嬰商城請輸入需要的商品 ...
摘要:針對的初學者,從無到有的語言如何入門,主要包括了的簡介,如何下載,如何安裝,如何使用終端,等各種開發環境進行開發,中的語法和基本知識概念和邏輯,以及繼續深入學習的方法。 ...
摘要:最近迷上了雖然本人是搞的,但是被的快速簡潔深深折服特此獻上本人與的之旅,見笑環境本文后續更新請查看開始創建項目打開終端命令,沒有消息就是好消息,此時已經成功創建項目。 最近迷上了django(雖然本人是搞java的^_^),但是被django的快速、簡潔深深折服特此獻上本人與django的hello world之旅,見笑! 環境:MacOS+python2.7+Django 1.9.5...
閱讀 3187·2021-11-23 09:51
閱讀 1524·2021-11-22 09:34
閱讀 2836·2021-10-27 14:15
閱讀 2266·2021-10-12 10:17
閱讀 1884·2021-10-12 10:12
閱讀 946·2021-09-27 14:00
閱讀 1996·2021-09-22 15:19
閱讀 1032·2019-08-30 10:51