基於django快速開發一個網站(一)

基於django快速開發一個網站(一)

*  創建虛擬環境、基於虛擬環境創建django==2.0.0和圖片載入庫和mysql資料庫驅動

1. 創建目錄並創建虛擬環境

╰$ mkdir Cornucopiavirtualenv
╰$ cd Cornucopiavirtualenv
╰$ virtualenv env1 

2. 進入bin目錄,並激活虛擬環境

╰$ cd bin
╰$ source activate

3. 進入環境、創建django和Pillow、PyMySQL

╰$ pip install django==2.0.0
╰$ pip install pillow
╰$ pip install pymysql
或者也可以
╰$ pip install pymysql pillow django==2.0.0

4. 創建Cornucopia的項目並設置book模組,並設置中文和中國上海的時區

╰$ django-admin startproject Cornucopia
╰$ python3 manage.py startapp book

4-1. 設置中文和中國上海的時區(在settings.py中修改)

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

5. 創建model模型數據

class User(models.Model):
    nickname = models.CharField(max_length=50, blank=True)
    email = models.EmailField('email address', blank=True, unique=True)

    def __str__(self):
        return self.nickname


class Category(models.Model):
    name = models.CharField('分類名稱', max_length=128)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '書籍分類'
        verbose_name_plural = verbose_name


class Tag(models.Model):
    name = models.CharField('標籤', max_length=128)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = '書籍標籤'
        verbose_name_plural = verbose_name


class Entry(models.Model):
    title = models.CharField('文章標題', max_length=128)
    author = models.ForeignKey(User, verbose_name='作者', on_delete=models.CASCADE)
    book_imge = models.ImageField(upload_to='blog_img', null=True, blank=True, verbose_name='書籍配圖')
    # body = models.TextField('正文', )
    body = MDTextField()
    # abstract = models.TextField('摘要', max_length=256, null=True, blank=True)
    abstract = MDTextField()
    visiting = models.PositiveIntegerField('訪問量', default=0)
    category = models.ManyToManyField('Category', verbose_name='部落格分類')
    tags = models.ManyToManyField('Tag', verbose_name='標籤')
    created_time = models.DateTimeField('創建時間', auto_now_add=True)
    modifyed_time = models.DateTimeField('修改時間', auto_now=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created_time']
        verbose_name = '    書籍正文'
        verbose_name_plural = verbose_name

6.  設置資料庫鏈接方式在settings.py中修改

import pymysql

pymysql.install_as_MySQLdb()

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'books',  # 資料庫名字
        'USER': 'root',  # 帳號
        'PASSWORD': '',  # 密碼
        'HOST': 'localhost',  # IP
        'PORT': '3306',  #
    }
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
}

7. 將新的模組book加入系統中

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'book',
]

8.  遷移數據、到資料庫

╰$ python3 manage.py makemigrations
╰$ python3 manage.py migrate

9. 創建超級管理員,根據提示一步一步來

╰$ python3 manage.py createsuperuser

10. 在urls.py中進行路由配置

from django.conf.urls import url, include
from django.contrib import admin

urlpatterns = [
    url(r'admin/', admin.site.urls),
    url(r'^', include('book.urls')),
]

11. 在book模組中,創建urls.py配置路由

from django.conf.urls import url
from . import views

app_name = 'book'
urlpatterns = [
    url(r'^$', views.index, name='book_index'),
    url(r'^(?P<blog_id>[0-9]+)', views.detail, name='book_detail'),
]

12. 配置前端頁面在Cornucopia/book下創建templates/book,兩個目錄,在settings.py配置templates路徑

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

13. 創建index.html和detail.html

 

 

14.配置靜態文件目錄在Cornucopia/book下創建static/css,兩個目錄,在settings.py配置templates路徑

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static').replace('\\', '/'),
]

15.admin.py配置後台現在內容

from django.contrib import admin
from . import models

class EntryAdmin(admin.ModelAdmin):
    list_display = ['title','author','visiting','created_time','modifyed_time']

admin.site.register(models.Category)
admin.site.register(models.Tag)
admin.site.register(models.Entry,EntryAdmin)

16.啟動程式、登入後台

╰$ python3 manage.py runserver 127.0.0.1:8001

 

 

Tags: