Djangoのインストール構成と開発
8246 ワード
参考:『Django Web開発ガイド』
Djangoのインストール構成
1、https://www.djangoproject.com/download/ダウンロードDjango-1.5.1.tar.gz 2、ubuntuでダウンロード解凍:tar xzvf Django-1.5.1.tar.gz 3、rootに切り替え、Django-1.5.1/でpython setupを実行する.py install 4、/usr/local/lib/python 2にインストールする.7/dist-packages/下5、workディレクトリを作成し、django-adminを実行する.py startproject mysite 6、mysiteディレクトリに入り、djangoサーバ:1)、python manageを起動する.py runserverブラウザで入力http://192.168.9.155:8080 2)、python manage.py runserver 0.0.0.0:8000ブラウザに入力http://192.168.9.155:8000該当ページが表示されます
アプリを作成し、簡単なBlogを作成します.
1.mysite/でpython manageを実行する.py startapp blogを作成し、プロファイルwork/mysite/mysite/settingにappを追加します.pyでINSTALLED_APPSに'mysite.blog'そして'django.contrib.admin,および'django.contrib.admindocs,のコメント削除
2、それから自分のテンプレートを編集することができて、work/mysite/blog/modelsを編集します.pyファイルは次のとおりです.
3、mysiteディレクトリのurlsを修正する.py:
編集が完了するとsettings.pyでデータベースを構成しました.編集プロファイルのdatabaseに関する内容は次のとおりです.
4、Djangoが提供した接続情報でデータベースに接続し、アプリケーションに必要なテーブルを設定し、コマンド:./manage.py syncdb
エラーが発生する可能性があります.
1)、http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.4b4/MySQL-python-1.2.4 b 4をダウンロードします.tar.gz
解凍後python setupを実行する.py build、エラーが発生した場合は、https://pypi.python.org/pypi/distribute/0.6.28distribute-0.6.28をダウンロードします.tar.gz
解凍後python setupを実行する.py installインストール;
MySQL-python-1.2.4 b 4ディレクトリでpython setupを実行します.py buildに成功しました.python setupを再実行します.py install
2)、またはapt-getインストール:sudo apt-get install python-mysqldb
5、再度mysiteへ実行する./manage.py syncdb
6、サーバーを起動する:python manage.py runserver 0.0.0.0:8000、ブラウザにログイン:http://192.168.9.155:8000/admin/ログインインタフェースが表示されます.
7、この时あなたは私达の新しいsblogが现れていないことを発见することができて、それではblogディレクトリの下でadminを新しくします.py、次のコードを編集してadminページをリフレッシュすると、新しい発見があります.
8、プロジェクトに新しいアプリケーションを追加するたびに、実行します./manage.py syncdbコマンドは、必要なテーブルがデータベースに作成されていることを確認します.次のエラーが発生します.
DatabaseError: (1146, "Table 'django_blog.django_admin_log' doesn't exist")
9、この时、あなたはページの上のBlogs postsの后ろのAddをクリックしてブログを発表することができます;タイトルと内容を編集して日付と時間を取得した後、saveをクリックして保存し、すべてのblog投稿をリストしたリストに行くと、投稿の名前「BlogPost object」が気に入らないのではないでしょうか.次のコードは、blogの名前でリストに表示されます.
モデルでpyに追加:
Blogの共通部分を作成するには、次の手順に従います.
1、アプリケーションのデータベース部分とadmin部分を作成した後、公衆向けのページ部分を見てみましょう.Djangoの観点から見ると、1つのページには3つの典型的な構成があります.テンプレート、ビュー、URLモードです.
a、テンプレートの作成:archiveを編集する.htmlのページをblog/templatesディレクトリの下に置きます.
ビューでpyに入力:
mysiteをurlsから降ろすpyの次の行のコメントを削除して変更します.
2、ブラウザに入力http://192.168.9.155:8000/blog/ああ、きれいなページが見えます.貼り紙のタイトル、時間、本文があります.
その他の最適化:
1、テンプレート
サイトにblog、アルバム、リンクページがある場合は、テンプレートを使用するかもしれません.
blog/templatesにbaseを作成します.htmlのテンプレート、内容は以下の通りです.
修正するhtmlは、ベーステンプレートを参照させます.
ここで{%extends"base.html"%}ラベルはDjangoにbase.を検索するように伝えます.htmlのラベルは、このモジュールの名前付きブロックの内容をそのテンプレートの対応するブロックに記入します.
blogを更新すると、異なるページが表示されます.
2、日付順:ブログリストが従来の日付順ではないことに気づいたはずですが、この機能を実現するにはDjangoでいくつかの方法があります.モデルにデフォルトのソートを追加できます.
class BlogPost(models.Model):クラスにネストされたクラスを追加します.
3、テンプレートフィルタでタイムスタンプをフォーマットする:Aug.7,2013,3:32 p.m.というタイムスタンプフォーマットが気に入らないと思ったら、以下の操作でよりよくなります.
開けてhtmlは
Djangoのインストール構成
1、https://www.djangoproject.com/download/ダウンロードDjango-1.5.1.tar.gz 2、ubuntuでダウンロード解凍:tar xzvf Django-1.5.1.tar.gz 3、rootに切り替え、Django-1.5.1/でpython setupを実行する.py install 4、/usr/local/lib/python 2にインストールする.7/dist-packages/下5、workディレクトリを作成し、django-adminを実行する.py startproject mysite 6、mysiteディレクトリに入り、djangoサーバ:1)、python manageを起動する.py runserverブラウザで入力http://192.168.9.155:8080 2)、python manage.py runserver 0.0.0.0:8000ブラウザに入力http://192.168.9.155:8000該当ページが表示されます
アプリを作成し、簡単なBlogを作成します.
1.mysite/でpython manageを実行する.py startapp blogを作成し、プロファイルwork/mysite/mysite/settingにappを追加します.pyでINSTALLED_APPSに'mysite.blog'そして'django.contrib.admin,および'django.contrib.admindocs,のコメント削除
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
'django.contrib.admindocs',
)
2、それから自分のテンプレートを編集することができて、work/mysite/blog/modelsを編集します.pyファイルは次のとおりです.
from django.db import models
# Create your models here.
class BlogPost(models.Model):
title = models.CharField(max_length= 150)
body = models.TextField()
timestamp = models.DateTimeField()
3、mysiteディレクトリのurlsを修正する.py:
from django.contrib import admin
admin.autodiscover()
およびurl(r'^admin/doc/', include('django.contrib.admindocs.urls')),
url(r'^admin/', include(admin.site.urls)),
コメント削除編集が完了するとsettings.pyでデータベースを構成しました.編集プロファイルのdatabaseに関する内容は次のとおりです.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'django', # Or path to database file if using sqlite3.
# The following settings are not used with sqlite3:
'USER': 'johnny',
'PASSWORD': '0000',
'HOST': '192.168.9.155', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP.
'PORT': '3306', # Set to empty string for default.
}
}
注意:djangoデータベースはすでに確立されたデータベースである必要があります.4、Djangoが提供した接続情報でデータベースに接続し、アプリケーションに必要なテーブルを設定し、コマンド:./manage.py syncdb
エラーが発生する可能性があります.
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb
解決策:1)、http://sourceforge.net/projects/mysql-python/files/mysql-python-test/1.2.4b4/MySQL-python-1.2.4 b 4をダウンロードします.tar.gz
解凍後python setupを実行する.py build、エラーが発生した場合は、https://pypi.python.org/pypi/distribute/0.6.28distribute-0.6.28をダウンロードします.tar.gz
解凍後python setupを実行する.py installインストール;
MySQL-python-1.2.4 b 4ディレクトリでpython setupを実行します.py buildに成功しました.python setupを再実行します.py install
2)、またはapt-getインストール:sudo apt-get install python-mysqldb
5、再度mysiteへ実行する./manage.py syncdb
Creating tables ...
Creating table auth_permission
Creating table auth_group_permissions
Creating table auth_group
Creating table auth_user_groups
Creating table auth_user_user_permissions
Creating table auth_user
Creating table django_content_type
Creating table django_session
Creating table django_site
Creating table blog_blogpost
You just installed Django's auth system, which means you don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'johnny'):
Email address: [email protected]
Password:
Password (again):
Superuser created successfully.
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
6、サーバーを起動する:python manage.py runserver 0.0.0.0:8000、ブラウザにログイン:http://192.168.9.155:8000/admin/ログインインタフェースが表示されます.
7、この时あなたは私达の新しいsblogが现れていないことを発见することができて、それではblogディレクトリの下でadminを新しくします.py、次のコードを編集してadminページをリフレッシュすると、新しい発見があります.
#!/usr/bin/python
# -*- coding: utf-8 -*-
from django.contrib import admin
from sblog.models import BlogPost
admin.site.register(BlogPost)
8、プロジェクトに新しいアプリケーションを追加するたびに、実行します./manage.py syncdbコマンドは、必要なテーブルがデータベースに作成されていることを確認します.次のエラーが発生します.
DatabaseError: (1146, "Table 'django_blog.django_admin_log' doesn't exist")
9、この时、あなたはページの上のBlogs postsの后ろのAddをクリックしてブログを発表することができます;タイトルと内容を編集して日付と時間を取得した後、saveをクリックして保存し、すべてのblog投稿をリストしたリストに行くと、投稿の名前「BlogPost object」が気に入らないのではないでしょうか.次のコードは、blogの名前でリストに表示されます.
モデルでpyに追加:
from django.contrib import admin
class BlogPostAdmin(admin.ModelAdmin):
list_display = ('title','timestamp')
admin.pyで変更:from blog.models import BlogPost ,BlogPostAdmin
admin.site.register(BlogPost,BlogPostAdmin)
ページの更新をクリックすると、リストのtitleにblogのタイトルが表示され、タイムスタンプが表示されます.Blogの共通部分を作成するには、次の手順に従います.
1、アプリケーションのデータベース部分とadmin部分を作成した後、公衆向けのページ部分を見てみましょう.Djangoの観点から見ると、1つのページには3つの典型的な構成があります.テンプレート、ビュー、URLモードです.
a、テンプレートの作成:archiveを編集する.htmlのページをblog/templatesディレクトリの下に置きます.
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{% endfor %}
b、ビュー関数の作成:ビューでpyに入力:
from django.template import loader,Context
from django.http import HttpResponse
from blog.models import BlogPost
def archive(request):
posts = BlogPost.objects.all()
t = loader.get_template("archive.html")
c = Context({'posts':posts})
return HttpResponse(t.render(c))
c、URLモードを作成する:mysiteをurlsから降ろすpyの次の行のコメントを削除して変更します.
url(r'^blog/', include('blog.urls')),
blogディレクトリに新しいurlsを作成する.pyと編集:from django.conf.urls.defaults import *
from blog.views import archive
urlpatterns = patterns('',
url(r'$',archive),
)
2、ブラウザに入力http://192.168.9.155:8000/blog/ああ、きれいなページが見えます.貼り紙のタイトル、時間、本文があります.
その他の最適化:
1、テンプレート
サイトにblog、アルバム、リンクページがある場合は、テンプレートを使用するかもしれません.
blog/templatesにbaseを作成します.htmlのテンプレート、内容は以下の通りです.
{% block content %}
<html>
<style type="text/css">
body{color:#efd;background:#453;padding:0 5em;margin:0}
h1{padding:2em 1em;background:#675}
h2{color:#bf8;border-top:1px dotted #fff;margin-top:2em}
p{margin: 1em 0}
</style>
<body>
<h1>Johnny.He </h1>
{% block content %}
{% endblock %}
</body>
</html>
修正するhtmlは、ベーステンプレートを参照させます.
{% extends "base.html" %}
{% block content %}
{% for post in posts %}
<h2>{{post.title}}</h2>
<p>{{post.timestamp}}</p>
<p>{{post.body}}</p>
{% endfor %}
{% endblock %}
ここで{%extends"base.html"%}ラベルはDjangoにbase.を検索するように伝えます.htmlのラベルは、このモジュールの名前付きブロックの内容をそのテンプレートの対応するブロックに記入します.
blogを更新すると、異なるページが表示されます.
2、日付順:ブログリストが従来の日付順ではないことに気づいたはずですが、この機能を実現するにはDjangoでいくつかの方法があります.モデルにデフォルトのソートを追加できます.
class BlogPost(models.Model):クラスにネストされたクラスを追加します.
class Meta:
ordering = ('-timestamp',)
更新http://192.168.9.155:8000/blog/ああ、ブログの最新の投稿が上に並んでいるのが見えます3、テンプレートフィルタでタイムスタンプをフォーマットする:Aug.7,2013,3:32 p.m.というタイムスタンプフォーマットが気に入らないと思ったら、以下の操作でよりよくなります.
開けてhtmlは
{{post.timestamp}
を{{post.timestamp|date}
に変更し、3:32 p.mをフィルタリングします{{post.timestamp|date:"Y,F jS,l"}
に変更すると、2013,August 7 th,Wednesdayのフォーマットになります