使用django配置一个完整的MTV

作者:zccst

首先需要能清楚project 和 app 之间区别

project 和 app 之间到底有什么不同呢?它们的区别就是一个是配置另一个是 代码:

一个project包含很多个Django app以及对它们的配置。
技术上,project的作用是提供配置文件,比方说哪里定义数据库连接信息, 安装的app列表, TEMPLATE_DIRS ,等等。

一个app是一套Django功能的集合,通常包括模型和视图,按Python的包结构的方式存在。

例如,Django本身内建有一些app,例如注释系统和自动管理界面。 app的一个关键点是它们是很容易移植到其他project和被多个project复用。

对于如何架构Django代码并没有快速成套的规则。 如果你只是建造一个简单的Web站点,那么可能你只需要一个app就可以了; 但如果是一个包含许多不相关的模块的复杂的网站,例如电子商务和社区之类的站点,那么你可能需要把这些模块划分成不同的app,以便以后复用。

1,对于project,只是配置

#1,在setting.py中
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.admin',
'web.manage_center',
)
#2,在urls.py中
urlpatterns = patterns('',
(r'^admin/(.*)', admin.site.root),
(r'^medias/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
(r'^index$', 'web.index.index'),
(r'^manage_center/', include('web.manage_center.urls')),
)


2,对于app,既有配置,还有代码引入
在manage_center中又有自己的一套文件
__init__.py
models.py
urls.py
views.py
../templates/manage_center/
在这个应用中,可能包含多个页面。很想一个一级菜单下的二级菜单。由于每一个二级菜单又包含多个url,那么还需要再拆分。最后拆分至每一个页面有一个view文件(my1_view.py)


#1,在url.py中
my1_urlpatterns = patterns('web.manage_center.views',
(r'^my1_index/$', 'my1_index'),
#.............多个url映射
)
urlpatterns += my1_urlpatterns

#2,在view.py中
from my1_views import * #引入,在第3步中的文件才能找到

#3,在my1_views.py中
def aidc_index(request):
render_dict = {}
render_dict['session_tab'] = xx
return render_to_response('manage_center/my1_index.html', render_dict)

#4,在templates/manage_center/下创建my1_index.html文件




3,添加一个action
action有两种类型,一个是渲染页面,一个是只负责返回数据。但本质都一样,都是url映射。

#在页面
<a href="manage_center/my1_func1"></a>

#在urls.py中
urlpatterns = patterns('',
(r'^my1_func1/$', 'my1_func1'),
)

#在my1_view.py中
def my1_func1:
render_to_response("xx/xx/xx.html",arr);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值