django基礎 (二)Templates, Models, Admin

Templates介紹

什麼是Templates

  • HTML文件;
  • 使用了django模板語言(Django Template Language, DTL);
  • 可以使用第三方模板(如Jinja2);
  • 使用其他模板的方法:
  • 在settings.py下,TEMPLATES=[]中的第一句‘BACKEND’值改爲其他模板

步驟

  • 在APP的根目錄下創建名叫templates的目錄;
  • 在該目錄下創建HTML文件;
  • 在views.py中返回render()
    render()通常傳遞三個參數:對象本身, html文件, 後臺傳遞到前端的數據;
    刷新頁面,如果報錯:
    TemplateDoesNotExist at /index/blog/
    index.html
    解決方法:
    #settings.py#
    TEMPLATES = [{
    ‘DIRS’: [os.path.join(BASE_DIR, ‘newApp/templates’)],
    }

DTL初步使用

  • render()函數中支持一個dict類型參數;
  • 該字典是後臺傳遞到模板的參數,key爲參數名;
  • 在模板中使用{{參數名}}來直接使用;

注意事項
django查找template的順序:

  • django按照INSTALLED_APPS中的添加順序查找templates;
  • 不同APP下templates目錄中的同名.html文件會造成衝突;

解決templates衝突方案:

  • 在APP的templates目錄下創建以APP名爲名稱的目錄;
  • 將html文件放入新創建的目錄下;

Models介紹

django中的models是什麼?

  • 通常,一個model對應數據庫的一張數據表;
  • django中models以類的形式表現;
  • 它包含了一些基本字段以及數據的一些行爲;

ORM

  • 對象關係映射(object relation mapping);
  • 實現了對象和數據庫之間的映射;
  • 隱藏了數據訪問的細節,不需要編寫SQL語句。

步驟

字段創建

字段即類裏面的屬性(變量);
attr = models.CharField(max_length=64);

class Article(models.Model):
    title = models.CharField(max_length=32,default='title')
    conten = models.TextField(null=True)

關於各種字段以及各種字段的可選參數可以參照官方文檔:
https://docs.djangoproject.com/en/1.10/ref/models/fields

步驟

  • 命令行中進入manage.py同級目錄;
  • 執行 python manage.py makemigrations app名
  • python manage.py migrate

查看

  • django會自動在app/migrations/目錄下生成移植文件;
  • 執行python manage.py sqlmigrate 應用名 文件id 查看SQL語句;
  • 默認sqlite3的數據庫在項目根目錄下db.sqlite3;

生成數據表

  • 查看並編輯db.sqlite3
  • 使用第三方軟件;
  • SQLite Expert Peronal;輕量級,完全免費;
  • 插入一條數據;

頁面呈現數據

後臺步驟
views.py中import models

from . import models
def index(request):
    article = models.Article.objects.get(pk=1)  #獲取主鍵爲1的模型對象
    render(request, 'index.html', {'article': article})

前端步驟
模板可直接使用對象以及對象的“.”操作;

{{ article.title}}
{{ article.content }}

Admin簡介

什麼是admin?

  • admin是django自帶的一個功能強大的自動化數據管理界面;
  • 被授權的用戶可直接在admin中管理數據庫;
  • django提供了許多針對admin 的定製功能;

配置admin
創建用戶

python manage.py createsuperuser  #創建超級用戶
Username (leave blank to use 'test'): admin
Email address:[email protected]
Password: AnthiLiu99  # django1.9以後不支持創建太過簡單的密碼
Password(again): AnthiLiu99

localhost:8000/admin/ #Admin入口
將管理界面語言改爲簡體中文:修改settings.py中 LANGUAGE_CODE = ’ zh_Hans’

配置應用
在應用下admin.py中引入自身的models模塊(或裏面的模型類);
編輯admin.py

from .models import Article
admin.site.register(Article)  # 把我們的模型類註冊進去 

現在刷新一下頁面就可以看到我們創建的內容。

修改數據
點擊Article超鏈接進入Article列表頁面;
點擊任意一條數據,進入編輯頁面修改;
編輯頁面下方一排按鈕可執行相應操作。

修改後臺數據默認顯示名稱
步驟
在Article類下添加一個方法;
根據python版本選擇的 str(self) 或 _unicode(self);
return self.title

def __str__(self):  # python 3.x
    return self.title
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章