设为首页 收藏本站
查看: 580|回复: 0

[经验分享] [Python] 使用Django开发Web框架

[复制链接]

尚未签到

发表于 2017-5-1 13:36:42 | 显示全部楼层 |阅读模式
Django Web框架简介

Django 项目是一个 python[1]定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:

  • 用于创建模型的对象关系映射
  • 为最终用户设计的完美管理界面
  • 一流的 URL 设计
  • 设计者友好的模板语言
  • 缓存系统。

Django符合MTV架构






Django的安装

Django的安装有两种方法,具体可参考官网(https://www.djangoproject.com/download/),这里采用第二种方法,即Option 2. Get the latest development version,具体如下:

[dw_mon@TDDBA ~]$ git clone https://github.com/django/django.git
[dw_mon@TDDBA install]$ cd django
[dw_mon@TDDBA django]$ python setup.py install安装成功后,就可以使用Django的管理工具了django-admin.py




Django项目和应用程序

通过以下命令创建一个Django项目:

[dw_mon@TDDBA project]$ django-admin.py startproject eshop
以上命令会在当前目录下创建eshop的文件夹(即项目),其中包含了运行 Django 项目所需要的基本配置文件:


[dw_mon@TDDBA eshop]$ ls
__init__.py  settings.py  urls.py  wsgi.py




接着,我们要在该项目下创建一个应用程序order:

[dw_mon@TDDBA eshop]$ python manage.py startapp order以上命令会在当前目录下创建一个order目录,该目录有如下文件:

[dw_mon@TDDBA eshop]$ cd order
[dw_mon@TDDBA products]$ ls
admin.py  __init__.py  models.py  tests.py  views.py



提供应用程序在项目中的位置纯粹是为新 Django 开发人员建立的一种惯例,并不是必需的。

为了使 Django 认识到新应用程序的存在,还需要向 settings.py 文件中的 INSTALLED_APPS 添加一个条目:



INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'order',
)






Django数据模型

Django 提供了自己的对象关系型数据映射组件(object-relational mapper,ORM)库,它可以通过 Python 对象接口支持动态数据库访问。




ORM 目前提供了对 PostgreSQL、MySQL、SQLite 和 Microsoft® SQL 数据库的支持。


这里采用默认的SQLite,SQLite 只需要指定数据库引擎和数据库名即可,而其它数据库还需要制定用户名、密码等。


settings.py 文件中的 DATABASES)

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}



下面编辑order/models.py模块,定义Python对象与数据库表中的映射关系。

from django.db import models
class Product(models.Model):
name = models.CharField('product name', max_length=30)
price = models.FloatField('price', default=10)
def __unicode__(self):
return "%s --> %f" %(self.name,self.price)

[size=0.76em]


[size=0.76em]
然后,运行以下命令就可以在数据库中创建表:

[size=0.76em]


[dw_mon@TDDBA eshop]$ python manage.py syncdb


注意,syncdb命令要求我们创建一个超级用户帐号。这是因为 django.contrib.auth 应用程序(提供基本的用户身份验证功能)默认情况下是在 INSTALLED_APPS 设置中提供的。超级用户名和密码用来登录将在下一节介绍的管理工具。记住,这是 Django
的超级用户,而不是系统的超级用户。




上面的命令执行完之后,会产生一个db.sqlite3文件用于存储数据文件:

[dw_mon@TDDBA eshop]$ ls
db.sqlite3  eshop  manage.py  order




Django的管理工具

管理工具是 Django 提供的一个应用程序。与
order应用程序一样,在使用之前也必须进行安装。第一个步骤是将应用程序的模块(django.contrib.admin)添加到
INSTALLED_APPS 设置中:




INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'order',
'django.contrib.admin',
)


使管理工具可以通过 urls.py 使用(编辑urls.py文件):


from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
# Examples:
# url(r'^$', 'eshop.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),
url(r'^admin/', include(admin.site.urls)),
)





这个管理应用程序有自己的数据库模型,但也需要进行安装。我们可以再次使用syncdb命令来完成这个过程:


[dw_mon@TDDBA eshop]$ python manage.py syncdb


要查看这个管理工具,可以使用 Django 提供的测试服务器。






[dw_mon@TDDBA eshop]$ python manage.py runserver 10.249.76.133:8004
Validating models...
0 errors found
May 12, 2013 - 15:10:59
Django version 1.6, using settings 'eshop.settings'
Starting development server at http://10.249.76.133:8004/
Quit the server with CONTROL-C.

现在可以使用http://10.249.76.133:8004/admin 启动管理工具,并使用前面创建的超级用户帐号进行登录。


DSC0000.jpg


把自己定义的模块注入到管理工具

为了让管理工具可以管理我们之前定义的product对象,我们需要在order目录下编辑admin.py文件,注册自己的模块。

from django.contrib import admin
from models import Product
# Register your models here.
admin.site.register(Product)




刷新一下网页,就可以发现Product出现在管理页面。

DSC0001.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-371671-1-1.html 上篇帖子: 数据二进制python数据二进制 下篇帖子: Python中的type(anyObj) 函数 types 模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表