(坚持每一天,就是成功)
Python Django Web框架,Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V组成。
安装Python 和 Django可以自己查阅资料 此文均在Pycharm下进行需要下载可加群:607021567找群主,本文主要介绍电商产品。所以可自行学习,创造自己的网站。
1、Django架构设计:
层次
|
职责
|
模型(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上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql, Sqlite3,Oracle。Google 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' %}
一定要写路径。
至此,总体电商项目初入门介绍完毕,剩下的就是需要自己来创造其它的管理层页面。加油!之后也许继续会出多层次界面的介绍,请期待!
Welcome to Python world! I have a contract in this world! How about you?