djangoを使用して完全なMTVを構成
2674 ワード
作者:zccst
まずプロジェクトとappの違いをはっきりさせる必要がある.
Projectとappの間にはいったい何が違うのでしょうか.違いは、1つは構成であり、もう1つはコードです.
1つのプロジェクトには、Django appとその構成が多数含まれています.
技術上、projectの役割はプロファイルを提供することであり、例えばどこでデータベース接続情報を定義し、インストールしたappリスト、TEMPLATE_DIRS、など.
1つのappはDjango機能のセットであり、通常はモデルとビューを含み、Pythonのパケット構造によって存在する.
たとえば、Django自体には、注釈システムや自動管理インタフェースなどのappが組み込まれています.appの1つのキーは、他のプロジェクトに移植しやすく、複数のプロジェクトで多重化されることです.
Djangoコードをどのように構築するかについては、迅速なルールはありません.簡単なWebサイトを構築するだけであれば、appが1つだけでいいかもしれません.しかし、電子商取引やコミュニティなどの多くの関連のないモジュールを含む複雑なサイトであれば、後で多重化するために、これらのモジュールを異なるappに分割する必要があります.
1,プロジェクトについては構成のみ
2,appについては,構成もあればコード導入もある.
manage_センターには独自のファイルがあります
__init__.py
models.py
urls.py
views.py
../templates/manage_center/
このアプリケーションには、複数のページが含まれる場合があります.一級メニューの下の二級メニューがほしいです.各2次メニューにはurlが複数含まれるため、さらに分割する必要があります.最後に各ページに分割するviewファイル(my 1_view.py)
3,actionを追加する
Actionには2つのタイプがあります.1つはページをレンダリングし、1つはデータを返すだけです.しかし、本質は同じで、urlマッピングです.
まずプロジェクトとappの違いをはっきりさせる必要がある.
Projectとappの間にはいったい何が違うのでしょうか.違いは、1つは構成であり、もう1つはコードです.
1つのプロジェクトには、Django appとその構成が多数含まれています.
技術上、projectの役割はプロファイルを提供することであり、例えばどこでデータベース接続情報を定義し、インストールしたappリスト、TEMPLATE_DIRS、など.
1つのappはDjango機能のセットであり、通常はモデルとビューを含み、Pythonのパケット構造によって存在する.
たとえば、Django自体には、注釈システムや自動管理インタフェースなどのappが組み込まれています.appの1つのキーは、他のプロジェクトに移植しやすく、複数のプロジェクトで多重化されることです.
Djangoコードをどのように構築するかについては、迅速なルールはありません.簡単なWebサイトを構築するだけであれば、appが1つだけでいいかもしれません.しかし、電子商取引やコミュニティなどの多くの関連のないモジュールを含む複雑なサイトであれば、後で多重化するために、これらのモジュールを異なるappに分割する必要があります.
1,プロジェクトについては構成のみ
#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_センターには独自のファイルがあります
__init__.py
models.py
urls.py
views.py
../templates/manage_center/
このアプリケーションには、複数のページが含まれる場合があります.一級メニューの下の二級メニューがほしいです.各2次メニューにはurlが複数含まれるため、さらに分割する必要があります.最後に各ページに分割するviewファイル(my 1_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には2つのタイプがあります.1つはページをレンダリングし、1つはデータを返すだけです.しかし、本質は同じで、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);