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,のコメント削除
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のフォーマットになります