Pinax0.7.3のclone_project(雛形)一覧について
Djangoのフレームワークを元に、様々なプログラムをプラグインの形で詰め込んだPinaxは、
実によく作られています。
初期に入っている雛形のセットについて一覧を見てみましょう。
Pinax0.7.3にはあらかじめ、以下の雛形のセットが用意されています。
第1部 Pinaxプロジェクトの一覧
コマンド確認
以下のコマンドで、雛形のセットが確認できます。
% pinax-admin clone_project -l Available Projects ------------------ cms_project_company: A very simple CMS that lets you set up templates and then edit content, including images, right in the frontend of the site. The sample media, templates and content including in the project demonstrate a basic company website. basic_project: This project comes with the bare minimum set of applications and templates to get you started. It includes no extra tabs, only the profile and notices tabs are included by default. From here you can add any extra functionality and applications that you would like. intranet_project: This project demonstrates a closed site requiring an invitation to join and not exposing any information publicly. It provides a top-level task tracking system, wiki and bookmarks. It is intended to be the starting point of sites like intranets. private_beta_project: This project demonstrates the use of a waiting list and signup codes for sites in private beta. Otherwise it is the same as basic_project. code_project: This project demonstrates group functionality and the tasks, wiki and topics apps. It is intended to be the starting point for things like code project management where each code project gets its own wiki, task tracking system and threaded discussions. social_project: This project demonstrates a social networking site. It provides profiles, friends, photos, blogs, tribes, wikis, tweets, bookmarks, swaps, locations and user-to-user messaging. In 0.5 this was called "complete_project". cms_project_holidayhouse: A very simple CMS that lets you set up templates and then edit content, including images, right in the frontend of the site. The sample media, templates and content including in the project demonstrate a basic site for holiday house rentals. sample_group_project: This project demonstrates group functionality with a barebones group containing no extra content apps as well as two additional group types, tribes and projects, which show different membership approaches and content apps.
続いて、それぞれのプロジェクトに含まれるプログラムを見ていきます。
第2部:Pinaxの各プロジェクトの考察
各プロジェクトのurls.pyのurlpatternsと、
settings.pyのINSTALLED_APPSを見ていきましょう。
1.cms_project_company
cms_project_companyのurls.py
urlpatterns = patterns('', # some simple pages url(r'^$', direct_to_template, {"template": "homepage.html"}, name="home"), url(r'^products/$', direct_to_template, {"template": "products.html"}, name="products"), url(r'^support/$', direct_to_template, {"template": "support.html"}, name="support"), url(r'^about_us/$', direct_to_template, {"template": "about_us.html"}, name="about_us"), # 3rd party (r'^frontendadmin/', include('frontendadmin.urls')), (r'^attachments/', include('attachments.urls')), # pinax provided (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^admin/(.*)', admin.site.root), )
cms_project_companyのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'pagination', 'timezones', 'ajax_validation', 'uni_form', 'dbtemplates', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'django.contrib.admin', # project specific 'sorl.thumbnail', 'frontendadmin', 'attachments', 'django_generic_flatblocks', 'django_generic_flatblocks.contrib.gblocks', 'django.contrib.markup', )
2.basic_project
basic_projectのurls.py
urlpatterns = patterns('', url(r'^$', direct_to_template, { "template": "homepage.html", }, name="home"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', signup_view, name="acct_signup"), (r'^about/', include('about.urls')), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^profiles/', include('basic_profiles.urls')), (r'^notices/', include('notification.urls')), (r'^announcements/', include('announcements.urls')), (r'^admin/(.*)', admin.site.root), )
basic_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'announcements', 'pagination', 'timezones', 'ajax_validation', 'uni_form', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'signup_codes', 'about', 'django.contrib.admin', ) |
3.intranet_project
intranet_projectのurls.py
urlpatterns = patterns('', url(r'^$', direct_to_template, { "template": "homepage.html", }, name="home"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', "signup_codes.views.signup", name="acct_signup"), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^profiles/', include('basic_profiles.urls')), (r'^notices/', include('notification.urls')), (r'^announcements/', include('announcements.urls')), (r'^tagging_utils/', include('tagging_utils.urls')), (r'^attachments/', include('attachments.urls')), (r'^bookmarks/', include('bookmarks.urls')), (r'^tasks/', include('tasks.urls')), (r'^topics/', include('topics.urls')), (r'^comments/', include('threadedcomments.urls')), (r'^wiki/', include('wiki.urls')), (r'^admin/(.*)', admin.site.root), )
intranet_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'django.contrib.markup', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'announcements', 'pagination', 'timezones', 'ajax_validation', 'bookmarks', 'avatar', 'tagging', 'threadedcomments', 'wiki', 'uni_form', 'django_markup', 'attachments', 'django_filters', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'signup_codes', 'groups', 'topics', 'tagging_utils', 'threadedcomments_extras', 'tasks', 'tag_app', 'django.contrib.admin', )
4.private_beta_project
private_beta_projectのurls.py
urlpatterns = patterns('', url(r'^$', homepage, name="home"), url(r'^success/$', direct_to_template, {"template": "waitinglist/success.html"}, name="waitinglist_sucess"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', signup_view, name="acct_signup"), (r'^about/', include('about.urls')), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^profiles/', include('basic_profiles.urls')), (r'^notices/', include('notification.urls')), (r'^announcements/', include('announcements.urls')), (r'^admin/(.*)', admin.site.root), )
private_beta_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'announcements', 'pagination', 'timezones', 'ajax_validation', 'uni_form', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'waitinglist', 'signup_codes', 'about', 'django.contrib.admin', )
5.code_project
code_projectのurls.py
urlpatterns = patterns('', url(r'^$', direct_to_template, { "template": "homepage.html", }, name="home"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', signup_view, name="acct_signup"), (r'^about/', include('about.urls')), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^profiles/', include('basic_profiles.urls')), (r'^notices/', include('notification.urls')), (r'^avatar/', include('avatar.urls')), (r'^comments/', include('threadedcomments.urls')), (r'^announcements/', include('announcements.urls')), (r'^tagging_utils/', include('tagging_utils.urls')), (r'^attachments/', include('attachments.urls')), (r'^projects/', include('projects.urls')), (r'^admin/(.*)', admin.site.root), )
code_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'django.contrib.markup', 'django.contrib.admin', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'announcements', 'pagination', 'timezones', 'avatar', 'threadedcomments', 'ajax_validation', 'tagging', 'uni_form', 'wiki', 'django_sorting', 'attachments', 'django_markup', 'django_filters', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'signup_codes', 'about', 'tag_app', 'tagging_utils', 'threadedcomments_extras', 'groups', 'projects', 'tasks', 'topics', )
6.social_project
social_projectのurls.py
urlpatterns = patterns('', url(r'^$', direct_to_template, { "template": "homepage.html", }, name="home"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', signup_view, name="acct_signup"), (r'^about/', include('about.urls')), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^bbauth/', include('bbauth.urls')), (r'^authsub/', include('authsub.urls')), (r'^profiles/', include('profiles.urls')), (r'^blog/', include('blog.urls')), (r'^tags/', include('tag_app.urls')), (r'^invitations/', include('friends_app.urls')), (r'^notices/', include('notification.urls')), (r'^messages/', include('messages.urls')), (r'^announcements/', include('announcements.urls')), (r'^tweets/', include('microblogging.urls')), (r'^tribes/', include('tribes.urls')), (r'^comments/', include('threadedcomments.urls')), (r'^robots.txt$', include('robots.urls')), (r'^i18n/', include('django.conf.urls.i18n')), (r'^bookmarks/', include('bookmarks.urls')), (r'^admin/(.*)', admin.site.root), (r'^photos/', include('photos.urls')), (r'^avatar/', include('avatar.urls')), (r'^swaps/', include('swaps.urls')), (r'^flag/', include('flag.urls')), (r'^locations/', include('locations.urls')), (r'^feeds/tweets/(.*)/$', 'django.contrib.syndication.views.feed', tweets_feed_dict), (r'^feeds/posts/(.*)/$', 'django.contrib.syndication.views.feed', blogs_feed_dict), (r'^feeds/bookmarks/(.*)/?$', 'django.contrib.syndication.views.feed', bookmarks_feed_dict), )
social_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'django.contrib.markup', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'django_extensions', 'robots', 'friends', 'mailer', 'messages', 'announcements', 'oembed', 'djangodblog', 'pagination', # 'gravatar', 'threadedcomments', 'threadedcomments_extras', 'wiki', 'swaps', 'timezones', 'voting', 'voting_extras', 'tagging', 'bookmarks', 'blog', 'ajax_validation', 'photologue', 'avatar', 'flag', 'microblogging', 'locations', 'uni_form', 'django_sorting', 'django_markup', 'staticfiles', # internal (for now) 'analytics', 'profiles', 'account', 'signup_codes', 'tribes', 'photos', 'tag_app', 'topics', 'groups', 'django.contrib.admin', )
7.cms_project_holidayhouse
cms_project_holidayhouseのurls.py
urlpatterns = patterns('', # some simple pages url(r'^$', direct_to_template, {"template": "homepage.html"}, name="home"), url(r'^rooms/$', direct_to_template, {"template": "rooms.html"}, name="rooms"), url(r'^prices/$', direct_to_template, {"template": "prices.html"}, name="prices"), url(r'^contact/$', direct_to_template, {"template": "contact.html"}, name="contact"), # 3rd party (r'^frontendadmin/', include('frontendadmin.urls')), (r'^attachments/', include('attachments.urls')), # pinax provided (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^admin/(.*)', admin.site.root), )
cms_project_holidayhouseのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'pagination', 'timezones', 'ajax_validation', 'uni_form', 'dbtemplates', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'django.contrib.admin', # project specific 'sorl.thumbnail', 'frontendadmin', 'attachments', 'django_generic_flatblocks', 'django_generic_flatblocks.contrib.gblocks', 'django.contrib.markup', )
8.sample_group_project
sample_group_projectのurls.py
urlpatterns = patterns('', url(r'^$', direct_to_template, { "template": "homepage.html", }, name="home"), url(r'^admin/invite_user/$', 'signup_codes.views.admin_invite_user', name="admin_invite_user"), url(r'^account/signup/$', signup_view, name="acct_signup"), (r'^about/', include('about.urls')), (r'^account/', include('account.urls')), (r'^openid/(.*)', PinaxConsumer()), (r'^profiles/', include('basic_profiles.urls')), (r'^notices/', include('notification.urls')), (r'^announcements/', include('announcements.urls')), (r'^tagging_utils/', include('tagging_utils.urls')), (r'^comments/', include('threadedcomments.urls')), (r'^attachments/', include('attachments.urls')), (r'^groups/', include('basic_groups.urls')), (r'^tribes/', include('tribes.urls')), (r'^projects/', include('projects.urls')), (r'^admin/(.*)', admin.site.root), )
sample_group_projectのsettings.py
INSTALLED_APPS = ( # included 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'django.contrib.humanize', 'pinax.templatetags', # external 'notification', # must be first 'django_openid', 'emailconfirmation', 'mailer', 'announcements', 'pagination', 'timezones', 'ajax_validation', 'tagging', 'uni_form', 'wiki', 'avatar', 'threadedcomments', 'tribes', 'projects', 'gravatar', 'django_sorting', 'photologue', 'attachments', 'django_markup', 'django_filters', 'staticfiles', # internal (for now) 'basic_profiles', 'account', 'signup_codes', 'tag_app', 'tagging_utils', 'threadedcomments_extras', 'groups', 'topics', 'tasks', 'photos', 'basic_groups', 'about', 'django.contrib.admin', )
以上です。urls.pyのurlpatternsでどのようなサービスを提供しているか、
settingsのINSTALLED_APPSでどのようなモジュールが読み込まれているかわかります。