一、django框架的創建
1)第一種方法:cmd命令行里面進行創建
a、創建一個文件夾
b、打開文件夾,按照shift鍵,鼠標右鍵,點從此處打開命令行窗口
運行django: python mannage.py runserver
2)第二種方法:pycharm里面進行創建
3、運行django框架
1、點擊三角符號,運行
2、生成對話框
3、點擊網址,
二、分析各個文件夾的意義
1)
noevl app/應用
novel 項目
manage.py 管理文件
templates 存放模板文件的文件夾
2)具體分析各個文件的意義
Projects
novel :APP 文件名
static
css
js
img
__init__.py :聲明當前文件夾可以是一個模塊
admin.py :數據庫如果希望被后台看到,需要在這個文件下進行注冊
apps.py
models.py :映射了數據庫所創建的表
tests.py :實現某些測試驅動
viems.py :index函數返回index.html,但要templates里面去找index.html文件
templates
index.html
login.html
webapp
__init__.py
settings.py :定義了靜態文件存放的路徑,STATIC_URL = '/static/'。定義了數據庫的類型,也就是連接所在的的數據庫
urls.py :定義路由:urls(r'^$',viems.index)。==》去viems.py找到index函數
wsgi.py
三、創建應用的前的准備工作
1)修改成中文界面
LANGUAGE_CODE= 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
2)debug模式
debug : 調試模式,開發者模式。再發布前一定要關閉
四、寫入第一個程序,hello world
1)創建路由
2)創建視圖
3)注意 路由 和視圖 直接的關系
打開網頁
五、前端文件與django的結和
前端程序:html,css,js,jquery
后端程序:python,數據庫
1)html文件放入templates里面
2)視圖引入 index.html文件
3)運行django程序
注意,如果在python2中有變化
在python2中,需要注意在setting里面查看是否有添加novel,不然會找不到html的路徑,會出現下面個情況
但在python3中還是要加上,雖然不加novel,能找到html文件,但找不到css其他的靜態文件
4)靜態文件的存放目錄,static
a) 在app,也就是novel里面創建static文件夾
b) 把css,js,和img圖片文件放入其中
c)檢查前端html的文件導入靜態文件的路徑是否正確
寫法1,不推薦。因為如果需要改靜態文件的路徑,后期維護麻煩
<link rel="stylesheet" href="static/css/style.css" />
2、寫法2
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css'%}" />
例如html文件
{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主頁</title> </head> <body> {{ today }} <img src="{% static "img/1.jpg" %}"> </body> </html>
升級寫法

{% load static %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>主頁</title> </head> <body> {% if person_list %} {% for person in person_list %} <li>{{ person.account }}</li> {% endfor %} {% else %} <strong>沒有用戶</strong> {% endif %} </body> </html>
對應的模板文件
def index(request): #return HttpResponse('hello worlddddd') today = '今天天氣不好' content = {'today':today} return render(request,'index.html',content)
def index(request): #return HttpResponse('hello worlddddd') person_list = models.Person.objects.all() content = {'person_list':person_list} return render(request,'index.html',content)
六、創建html文件也django結合
1)創建dy.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>電影下載</title> </head> <body> <li><a href="#">{{ name1 }}</a> </li> <li><a href="#">{{ name2 }}</a> </li> </body> </html>
2)定義路由
url(r'^dy',views.dy),
3)定義視圖
def dy(request): names = { 'name1':"戰狼2", 'name2':"羞羞的鐵拳", } return render(request,'dy.html',context=names)
4)訪問,http://127.0.0.1:8000/dy
六、讓django連接數據庫
1)在webapp文件夾里面找到settings.py
# 默認數據庫, sqlite3 # DATABASES = { # 'default': { # 'ENGINE': 'django.db.backends.sqlite3', # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), # } # } # 使用的數據庫,mysql DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'novel', 'USER': 'novel', 'PASSWORD':'helloworld', 'RORT':'3306', }
2)從novel里面找到models.py文件。這是對數據庫增刪改查的文件
1、models.py對沒有數據庫的情況下,可以映射成真實的數據庫
a)寫上一個類,沒一個類,就相當於與一個表
from django.db import models # Create your models here. class Person(models.Model): account = models.CharField(max_length=15) passwd = models.CharField(max_length=15)
b)尋找差異文件,執行 python3 manage.py makemigrations
c)創建表 python3 manage.py migrate 創建表
d)admin.py注冊
e)打開后台網頁展示了剛剛創建的數據
2、models.py對已經存在數據庫的情況下,通過命令把數據庫映射成模型文件
python manage.py inspectdb > novel/models.py 生成了models.py文件
3)視頻里面導入模型
測試是否獲取到了數據
print(NovelCopy.objects.get(id=1).novelname)
#!/usr/bin/env python #-*-coding: utf8-*- from django.shortcuts import render from django.http import HttpResponse from novel.models import NovelCopy # Create your views here. def index(request): print(NovelCopy.objects.get(id=1).novelname) # NovelCopy 數據庫中的表 # objects 類的一個方法,相當於進去查看表的內容的 # get(id=1)) 找到這個id # novelname 這個id下面的一個字段 return render(request,'index.html')
七、前端隨機生成數據庫內容,如下
1)修改dy.html文件
{% for name in movies %} <li><a href="#">{{ name.title }}</a> </li> {% endfor %}
2)修改viems.py視圖文件,前提是數據庫連接好,並且操作數據庫的models.py也寫好
def dy(request): moviename = dymodels.objects.all[:10] # 獲取數據庫的表里面的所有內容隨機抽取10 names = { 'movies':"moviename", } return render(request,'dy.html',context=names)