(堅持每一天,就是成功)css
Python Django Web框架,Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MTV的框架模式,即模型M,模板T和視圖V組成。html
安裝Python 和 Django能夠本身查閱資料 此文均在Pycharm下進行須要下載可加羣:607021567找羣主,本文主要介紹電商產品。因此可自行學習,創造本身的網站。前端
一、Django架構設計:python
層次
|
職責
|
模型(Model),即數據存取層
|
處理與數據相關的全部事務: 如何存取、如何驗證有效性、包含哪些行爲以及數據之間的關係等。
|
模板(Template),即業務邏輯層
|
處理與表現相關的決定: 如何在頁面或其餘類型文檔中進行顯示。
|
視圖(View),即表現層
|
存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。
|
二、工做機制:sql
(這裏的文件順序或包含文件夾並不相同,我是爲了介紹各個文件,因此拼接到一塊兒。)數據庫
1.用manage .py runserver 啓動Django服務器時就載入了在同一目錄下的settings .py。這裏的settings.py文件內包含着數據庫信息的設置,靜態文件的設置,靜態文件指(js,css,html,images)等,settings.py文件是咱們django框架的核心文件之一。該文件包含了項目中的配置信息,如前面講的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪一個Python模塊應該用做本站的URLConf,默認的是urls .py。django
2.當訪問url的時候,Django會根據ROOT_URLCONF的設置來裝載URLConf。服務器
3.而後按順序逐個匹配URLConf裏的URLpatterns。若是找到則會調用相關聯的視圖函數(index.py),並把HttpRequest對象做爲第一個參數(一般是request)(函數的參數是request)。cookie
4.最後該view函數負責返回一個HttpResponse對象(html網頁)。架構
這裏的核心文件已經介紹完,剩下的文件能夠在咱們熟悉django框架後在認識,因此不一一介紹了!
三、部署:
Django能夠運行在Apache,Nginx上,也能夠運行在支持WSGI,FastCGI的服務器上。支持多種數據庫,已經支持Postgresql,MySql, Sqlite3,Oracle。Google App Engine也支持Django的某些部分,國內支持的平臺有(SAE)Sina App Engine,(BAE)百度應用引擎。
四、管理文件夾
接下來介紹核心文件夾,這裏是分類清楚咱們的文件該怎麼去管理:
(一)、這裏的文件夾名字能夠本身任意去命名,第一行是咱們的django項目的主文件夾名字,默認主文件夾下能夠本身建立本身的py文件的文件夾,不過pycharm自動建立了py文件的文件夾,命名規則是以主文件夾命名。
(二)、第二行就是咱們的py文件所在的文件夾,這些py文件主要是咱們操做前端到後臺所須要的。
(三)、第三行爲咱們的靜態文件目錄包含———:Js、Css、Html、img、fonts等文件
(四)、第四行主要是咱們的Html模板文件目錄,這裏存放咱們的主頁,後臺管理頁的html文件。
(五)、manage.py啓動文件
五、電商項目——產品數據,後臺管理
電商項目用戶部分:主要分爲三大類——一、用戶瀏覽商品 ,二、購買商品 ,三、管理訂單
電商項目管理部分:主要也爲三大類——一、商品數據整合網站 ,二、接受用戶信息數據存入後臺(註冊和管理),二、處理用戶訂單問題
分析到這裏首先進行電商管理部分,商品數據整合——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文件,就是咱們的詳細數據文件。
六、電商項目——後臺部分
一、網站首頁各個頁面的html模板,這裏的模板就是須要各位本身去創造了,這裏須要儲備前端的基礎知識,包括:JS,CSS,HTML基礎技能,也可直接下載現成的模板。
二、管理靜態文件——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文件。
三、策劃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的位置。
四、處理數據傳入操做——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的是須要一步一步去擴建,因此我只是介紹一下咱們平常項目的簡單介紹,若是又不太詳細的可加羣!
七、電商項目——前端構造:
這裏JS,CSS我不去解釋了,由於他們是前端的基礎應用,其中與python密切結合的是html:
因此我簡單介紹一下在html文件中怎麼去應用咱們後臺傳入的數據:
一、值傳入:
一、<link rel="stylesheet" type="text/css" href="/css/www_style.css?v={{ css_id }}" /> 二、<div><p>{{參數}</p></div>
這裏的值與參數都是「 {{ 參數 }} 」兩個大括號嵌入的。
二、判斷——可直接在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文件中用法無異。
三、嵌入網頁:
1 {% include 'template/footer.html' %}
必定要寫路徑。
至此,整體電商項目初入門介紹完畢,剩下的就是須要本身來創造其它的管理層頁面。加油!以後也許繼續會出多層次界面的介紹,請期待!