【django】ブログ構築チュートリアル(1)——環境構築、プロジェクト作成及び初歩テスト


djangoを使っていると信じている友達は、ブログを始めた人が多いので、新味はありませんが、個人的には意味があると思います!结局学习の资源はとても多くて、その上良いブログを组んで自分で使うことができます!!
以下私は自分でブログを作ったいくつかの過程を総括して記録して~みんなの参考に供します.
一.環境の構築
開発環境:
Ubuntu 14.04
python2.7.6
django1.8
virtualenv
Bootstrap3.0
環境構築:
virtualenvのインストール:
sudo pip install virtualenv

仮想環境の作成とアクティブ化:
virtualenv blog
cd blog
source bin/activate

virtualenvは独立したpython開発環境を作成することができ、仮想的な作業環境でインストールされた関連ソフトウェアは現在の環境にインストールされるため、異なる仮想環境は互いに干渉せず、異なるバージョンのpython開発に有利である.
Django 1をインストールします.8 :
pip install Django==1.8

sqliteを使用する場合はpytzをインストールします.
pip install pytz

二.プロジェクトの作成
jiangeという名前のblogのDjangoプロジェクト、プロジェクトを作成する命令は以下の通りです.
$ django-admin.py startproject my_blog

プロジェクトの構造を見てみましょう.
$ tree jiange_blog
jiange_blog/
├── jiange_blog
│   ├── __init__.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── manage.py

Django appの作成:
1つのプロジェクトの下で、複数のappを創立することができて、実はappは1つの機能モジュールに相当して、例えば私のブログは1つのモジュールで、それから私は評論、登録認証モジュールを独立してモジュールにすることができて、コードの管理を便利にして、再利用します.
blog appを作成する
$ python manage.py startapp  blog
jiange_blog/
├── blog
│   ├── admin.py
│   ├── __init__.py
│   ├── migrations
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
├── jiange_blog
│   ├── __init__.py
│   ├── __init__.pyc
│   ├── settings.py
│   ├── settings.pyc
│   ├── urls.py
│   └── wsgi.py
└── manage.py

blogを適用する下でmodels.pyはデータベースの部分です.views.pyはビュー処理部、adminです.pyはバックグラウンド管理部分です.
appを構築したらjiange_blog/jiange_blog/settings.pyに新しいアプリケーションを追加します.
 33 INSTALLED_APPS = (
 34     'django.contrib.admin',
 35     'django.contrib.auth',
 36     'django.contrib.contenttypes',
 37     'django.contrib.sessions',
 38     'django.contrib.messages',
 39     'django.contrib.staticfiles',
 40     'blog', #  blog app
 41 )

次のデータベースの移行と実行を行います.
python manage.py makemigrations
python manage.py migrate
python manage.py runserver

開くhttp://127.0.0.1:8000/「It worked!」を見たらそれではおめでとうございます.万事順調です.
まとめ:プロジェクトを作成し、appを作成し、appを構成します.
二.Moldes-データベース定義
各Django Modelはdjangoから継承する.db.models.Model.
Modelsで定義したクラスごとにテーブルが対応し、メンバーごとにプロパティが対応しています.
djangoが提供するデータベースインタフェースは、SQL文を自分で書く必要がなく、データベースを操作することができます.
データベースの設定
データベースの設定はjiange_blog/jiange_blog/setting.pyで行います.デフォルトはsqlite 3です.ここでもこのデフォルトのデータベースを使用すればいいです.
DATABASES = {
 79     'default': {
 80         'ENGINE': 'django.db.backends.sqlite3',
 81         'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
 82     }
 83 }

データベースの作成
編集/jiange_blog/blog/models.py:
#coding:utf-8
from django.db import models

#    admin    app  ,  admin app      str.title()   ,    str  title       .
class string_with_title(str):
    def __new__(cls, value, title):
        instance = str.__new__(cls, value)
        instance._title = title
        return instance

    def title(self):
        return self._title

    __copy__ = lambda self: self
    __deepcopy__ = lambda self, memodict: self

# Create your models here.
STATUS = {
        0: u'  ',
        1: u'  ',
        2: u'  ',
}

class Category(models.Model):
    name = models.CharField(max_length=40,verbose_name=u'  ')
    rank = models.IntegerField(default=0,verbose_name=u'  ')
    status = models.IntegerField(default=0,choices=STATUS.items(),verbose_name='  ')

    create_time = models.DateTimeField(u'    ',auto_now_add=True)

    class Meta:
        verbose_name_plural = verbose_name = u'  '
        ordering = ['rank','-create_time']
        app_label = string_with_title('blog',u"    ")

    def __unicode__(self):
            return '%s' % (self.name)


class Article(models.Model):
    category = models.ForeignKey(Category,verbose_name=u'  ')
    title = models.CharField(max_length=100,verbose_name=u'  ')
    en_title = models.CharField(max_length=100,verbose_name=u'    ')
    summary = models.TextField(verbose_name=u'  ')
    content = models.TextField(verbose_name=u'  ')

    view_times = models.IntegerField(default=0)

    is_top = models.BooleanField(default=False,verbose_name=u'  ')
    rank = models.IntegerField(default=0,verbose_name=u'  ')
    status = models.IntegerField(default=0,choices=STATUS.items(),verbose_name='  ')

    pub_time = models.DateTimeField(default=False,verbose_name=u'    ')
    create_time = models.DateTimeField(u'    ',auto_now_add=True)
    update_time = models.DateTimeField(u'    ',auto_now=True)

    class Meta:
        verbose_name_plural = verbose_name = u'  '
        ordering = ['rank','-is_top','-pub_time','-create_time']
        app_label = string_with_title('blog',u"    ")

    def __unicode__(self):
            return self.title

その中のunicode(self)は、modelsオブジェクトを出力するか、idを出力するか、nameを出力するか、それとも他のかなどの表示方法を定義しています.この関数で定義されています~
また、冒頭にcoding:utf-8を付けてください.そうしないと、中国語はコードできませんよ.
では、modelsの定義をデータベースに同期します.
python manage.py makemigrations
python manage.py migrate

データベースがあって、私达は后でそれに対して一连の操作を行うことができて、具体的な添削と调べの操作について、ここで详しく言わないで、みんなは自分で勉强して、下でもし出会ったら、私は少し以下を解釈して、ここで単独で言いません~
三.データベースの管理:Admin
Djangoの良い点は、バックグラウンド管理appを提供してくれて、それを通じて、バックグラウンドでデータベースの管理を行うことができます!
jiangeを見てみましょうblog/jiange_blog/settings.py:
INSTALLED_APPS = (
    'django.contrib.admin', #     admin
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

では、どうやって楽屋に入りますか?jiangeを見てみましょうblog/jiange_blog/urls.py:
urlpatterns = [
    # Examples:
    # url(r'^$', 'jiange_blog.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
]

だから、私たちはサービスを開始する場合に上陸するだけです.http://127.0.0.1:8000/admin楽屋に入ります~
ログインするには、もちろんユーザーを1人登録しますよ~
python manage.py createsuperuser 
#              ,           ~

不思議なことに、ログインした後、どうして私たちのデータベースを見なかったのですか?
焦らないでjiangeでblog/blog/admin.pyで設定:
#coding:utf-8
from django.contrib import admin
from blog.models import Article,Category
# Register your models here.

admin.site.register(Category)
admin.site.register(Article)

バックグラウンドを再リフレッシュすると、データベースが表示されます.
私たちのデータベースは少し醜いように見えますか?大丈夫bootstrapを使って美化できます.
pip install bootstrap-admin

そしてjiange_blog/jiange_blog/setting.pyでINSTALLED_を修正APPS:
INSTALLED_APPS = (
    'bootstrap_admin',  #     `django.contrib.admin`  
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
)

BOOTSTRAP_ADMIN_SIDEBAR_MENU = True

再び楽屋を開けて、とてもきれいではありませんか?!
四.ビューとurl
ブラウザに入力するとhttp://127.0.0.1:8000/urlsに走りますpyでは正規表現「^$」(空欄を表す)に一致するurlを探し、対応するviews関数にデータの処理を行い、返すページをレンダリングし、結果をユーザーに返します!
具体的には
まずはjiange_を見てみましょうblog/jiange_blog/urls.py:
urlpatterns = [
    # Examples:
    # url(r'^$', 'jiange_blog.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
]

管理を容易にするため、jiange_blog/blog/urlsを新規作成します.py、jiange_を変更しますblog/jiange_blog/urls.py、includeを入れてください.
from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [

    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('blog.urls')),

]

まずviewsを作成しjiange_に入りますblog/blog/views.py:
from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.
def index(request):
    return HttpResponse("Hello World, Django")

変更jiange_blog/blog/urls.py、マッピングを確立するには:
from django.conf.urls import url
from blog.views import index

urlpatterns = [
        url(r'^$', index),
]

ブラウザ入力http://127.0.0.1:8000/ああ、「ハローワールド、Django」を見ることができました!