基於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