Python Django(WEB電商項目構建)


(堅持每一天,就是成功)

Python Django Web框架,Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,模板T和視圖V組成。

安裝Python 和 Django可以自己查閱資料 此文均在Pycharm下進行需要下載可加群:607021567找群主,本文主要介紹電商產品。所以可自行學習,創造自己的網站。

1、Django架構設計:

Django是一個基於 MVC構造的框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責如下:
 
層次
職責
模型(Model),即數據存取層
處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及數據之間的關系等。
模板(Template),即業務邏輯層
處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。
視圖(View),即表現層
存取模型及調取恰當模板的相關邏輯。模型與模板的橋梁。

 

 

 

 

 

2、工作機制:

(這里的文件順序或包含文件夾並不相同,我是為了介紹各個文件,所以拼接到一起。)

1.用manage .py runserver 啟動Django服務器時就載入了在同一目錄下的settings .py。這里的settings.py文件內包含着數據庫信息的設置,靜態文件的設置,靜態文件指(js,css,html,images)等,settings.py文件是我們django框架的核心文件之一。該文件包含了項目中的配置信息,如前面講的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪個Python模塊應該用作本站的URLConf,默認的是urls .py。

2.當訪問url的時候,Django會根據ROOT_URLCONF的設置來裝載URLConf。

3.然后按順序逐個匹配URLConf里的URLpatterns。如果找到則會調用相關聯的視圖函數(index.py),並把HttpRequest對象作為第一個參數(通常是request)(函數的參數是request)。

4.最后該view函數負責返回一個HttpResponse對象(html網頁)。

這里的核心文件已經介紹完,剩下的文件可以在我們熟悉django框架后在認識,所以不一一介紹了!

 

3、部署:

Django可以運行在Apache,Nginx上,也可以運行在支持WSGIFastCGI的服務器上。支持多種數據庫,已經支持Postgresql,MySql, Sqlite3,OracleGoogle App Engine也支持Django的某些部分,國內支持的平台有(SAE)Sina App Engine,(BAE)百度應用引擎。

4、管理文件夾

接下來介紹核心文件夾,這里是分類清楚我們的文件該怎么去管理:

(一)、這里的文件夾名字可以自己任意去命名,第一行是我們的django項目的主文件夾名字,默認主文件夾下可以自己創建自己的py文件的文件夾,不過pycharm自動創建了py文件的文件夾,命名規則是以主文件夾命名。

(二)、第二行就是我們的py文件所在的文件夾,這些py文件主要是我們操作前端到后台所需要的。

(三)、第三行為我們的靜態文件目錄包含———:Js、Css、Html、img、fonts等文件

(四)、第四行主要是我們的Html模板文件目錄,這里存放我們的主頁,后台管理頁的html文件。

(五)、manage.py啟動文件

5、電商項目——產品數據,后台管理

電商項目用戶部分:主要分為三大類——1、用戶瀏覽商品 ,2、購買商品 ,3、管理訂單

電商項目管理部分:主要也為三大類——1、商品數據整合網站 ,2、接受用戶信息數據存入后台(注冊和管理),2、處理用戶訂單問題

分析到這里首先進行電商管理部分,商品數據整合——SqlServer + Django:

首先我們需要創建連接數據庫py文件——dataas.py:

1 class oneic_settings:
2     MSSQL_INFO = {"hostname":"xxx","username":"xxx","password":"xxx","dbname":"xx"}

接下來創建對數據庫詳細操作的py文件——data_db.py:

1 from dataas import oneic_settings
2 def mssqlserver_conn_db():
3   try:
4     #strconn= 'DSN=test;uid='+oneic_settings.MSSQL_INFO.get("username")+';PWD='+oneic_settings.MSSQL_INFO.get("password")
5     strconn= 'DRIVER={SQL Server};SERVER='+oneic_settings.MSSQL_INFO.get("hostname")+';DATABASE='+oneic_settings.MSSQL_INFO.get("dbname")+';UID='+oneic_settings.MSSQL_INFO.get("username")+';PWD='+oneic_settings.MSSQL_INFO.get("password")
6     db = pyodbc.connect(strconn)
7     return db
8   except Exception,e:
9     print e

這里首先使用准備好的sql文件,就是我們的詳細數據文件。

6、電商項目——后台部分

1、網站首頁各個頁面的html模板,這里的模板就是需要各位自己去創造了,這里需要儲備前端的基礎知識,包括:JS,CSS,HTML基礎技能,也可直接下載現成的模板。

2、管理靜態文件——settings.py:

 1 TEMPLATE_DIRS = (
 2     'E:/Oneic_new/Oneic_new',
 3     # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
 4     # Always use forward slashes, even on Windows.
 5     # Don't forget to use absolute paths, not relative paths.
 6 )
 7 STATIC_URL = 'E:/Oneic_new/static/'
 8 STATIC_ROOT = 'E:/Oneic_new/static/'
 9 
10 TEMPLATE_DIRS = (os.path.join(BASE_DIR,  'templates'),)

這里主要修改STATIC_URL 和 STATIC_ROOT文件。

3、策划url.py文件——控制網頁首頁顯示:

1 from django.conf import settings
2 (r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}),
3     url(r'^admin/', include(admin.site.urls)),
4     url(r'$','Oneic_new.index.new_html')

這寫代碼除了3行,剩余是我需要添加的代碼,第2行就是靜態文件的部署,4行是django所要找到url的位置。

4、處理數據傳入操作——index.py:

 1 import common
 2 import sms
 3 from uc import getShopCart,checkLogin
 4 def basicinfo(request):
 5     logininfo = checkLogin(request)
 6     if logininfo and logininfo.get('loginuserid') != None and logininfo.get('loginuserid')!="":
 7         userdata={}
 8         if logininfo.get('usertype') == None or logininfo.get('usertype') == "" or logininfo.get('usertype') == "0":
 9             return HttpResponseRedirect('/selectType.html')
10         mssql_conn = common.mssqlserver_conn_db()
11         cs = mssql_conn.cursor()
12         cs.execute("{call sp_member_Allinfo_get_py (?)}", logininfo.get('loginuserid'))
13         q = cs.fetchone()
14         cs.commit()
15         if (q and len(q) > 0):
16             if q[0] != 0:
17                 userdata['mp'] = q[1]
18                 userdata['realname'] = q[2]
19                 userdata['corname'] = q[3]
20                 userdata['tel'] = q[4]
21                 userdata['fax'] = q[5]
22                 userdata['pos'] = q[6]
23                 userdata['userType'] = q[7]
24                 userdata['userLevel'] = q[8] if q[8] else ''
25                 userdata['userClass'] = q[9] if q[9] else ''
26                 userdata['province'] = q[10] if q[10] else ''
27                 userdata['city'] = q[11] if q[11] else ''
28                 userdata['district'] = q[12] if q[12] else ''
29                 userdata['address'] = q[13] if q[13] else ''
30                 userdata['RegTime'] = q[14].strftime('%Y-%m-%d %H:%M:%S') if q[14] else ''
31                 userdata['LastLoginTime'] = q[15].strftime('%Y-%m-%d %H:%M:%S') if q[15] else ''
32                 userdata['LastLoginIP'] = q[16] if q[16] else ''
33                 userdata['LoginCount'] = q[17] if q[17] != None else ''
34                 userdata['Email'] = q[18] if q[18] else ''
35                 userdata['lottery_num'] = q[19] if q[19] != None else 0
36                 userdata['integral_num'] = q[20] if q[20] != None else 0
37                 userdata['po_num'] = q[21] if q[21] != None else 0
38                 userdata['work_order_num'] = q[22] if q[22] != None else 0
39                 userdata['rfq_num'] = q[23] if q[23] != None else 0
40         logininfo['userdata'] = userdata
41         cs.close()
42         mssql_conn.close()
43         return render_to_response('index.html',logininfo)
44     else:
45         return HttpResponseRedirect('/signin')

這里包含cookie檢測:checkLogin.py文件——cookie檢測。logininfo——為我們需要的數據就是要在網頁中顯示的數據。

checkLogin.py:

 1 from django.conf import settings
 2 #檢測是否登錄
 3 def checkLogin(req):
 4     edition_id = settings.SESSION_CSSID
 5     eny_email = req.COOKIES.get(settings.SESSION_COOKIE_MAIL,'')
 6     eny_mp = req.COOKIES.get(settings.SESSION_COOKIE_MP,'')
 7     eny_userid = req.COOKIES.get(settings.SESSION_COOKIE_UID,'')
 8     eny_usertype = req.COOKIES.get(settings.SESSION_COOKIE_UTYPE,'')
 9     
10     cartlist = getShopCart(req)
11     login_info = {"cartlist":cartlist,"cartnum":len(cartlist),"loginemail":"","loginuserid":"","loginmp":"","usertype":"","css_id":edition_id}
12     if eny_email != "":
13         login_info['loginemail'] = DES.decrypt(str(eny_email))
14     if eny_usertype:
15         login_info['usertype'] = DES.decrypt(str(eny_usertype)) #DES為加密的py文件,可以自己隨便寫!
16     if eny_userid != "":
17         login_info['loginuserid'] = DES.decrypt(str(eny_userid))
18         cartnum = getShoppcartNum(login_info.get('loginuserid'))
19         login_info['cartnum'] = cartnum
20     if eny_mp != "":
21         mphone = DES.decrypt(str(eny_mp))
22         enymp = []
23         mp=list(mphone)
24         for i in range(0,len(mp)):
25             if i>2 and i<7:
26                 mp[i]=chr(42)
27                 enymp.append(mp[i])
28             else:
29                 enymp.append(mp[i])
30         eny_Mp = ''.join(enymp)
31         login_info['loginmp'] = eny_Mp
32         login_info['mp'] = DES.decrypt(str(eny_mp))
33             
34     return login_info

這里是后台基本完成的項目了之一!WEB的是需要一步一步去擴建,所以我只是介紹一下我們日常項目的簡單介紹,如果又不太詳細的可加群!

7、電商項目——前端構造:

這里JS,CSS我不去解釋了,因為他們是前端的基礎應用,其中與python密切結合的是html:

所以我簡單介紹一下在html文件中怎么去應用我們后台傳入的數據:

1、值傳入:

1、<link rel="stylesheet" type="text/css" href="/css/www_style.css?v={{ css_id }}" />
2、<div><p>{{參數}</p></div>

這里的值與參數都是“ {{ 參數 }} ”兩個大括號嵌入的。

2、判斷——可直接在html中寫if else語句:

 1 {% if condition %}
 2      ... display
 3 {% endif %}
 4  
 5 or
 6 
 7 {% if condition1 %}
 8    ... display 1
 9 {% elif condition2 %}
10    ... display 2
11 {% else %}
12    ... display 3
13 {% endif %}

這里的用法和python文件中用法無異。

3、嵌入網頁:

1 {% include 'template/footer.html' %}

一定要寫路徑。

至此,總體電商項目初入門介紹完畢,剩下的就是需要自己來創造其它的管理層頁面。加油!之后也許繼續會出多層次界面的介紹,請期待!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM