小白神器 - Django - 起步css
一. Django下載html
1. 命令行前端
pip install django==1.11.16 pip install django==1.11.16 -i https://pypi.doubanio.com/simple/ #指定地址以後下載速度更快
2.Pycharmpython
#使用 pycharm 下載 可使用pip 下載同上, 也可使用如下界面操做 sttings -> 解釋器 -> 點+號 -> 輸入Django -> 選擇版本 -> 下載
二. 建立項目mysql
1. 命令行web
django-admin startproject 項目名
2.Pycharmsql
file -> new project -> 選擇Django -> 輸入項目名稱 -> 選擇解釋器 -> 輸入APP名稱 -> 建立項目
三. 啓動項目數據庫
1. 命令行django
切換到項目的根目錄下 manage.py服務器
python manage.py runserver #127.0.0.1:8000 python manage.py runserver 8000 # 127.0.01 python manage.py runserver 0.0.0.0:80 # 0.0.0.0:8000
2. pycharm
修改配置
點三角啓動 dj
四. 配置文件(settings)
1.靜態文件
STATIC_URL = '/static/' #別名 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static' ]
2.模板
TEMPLARTES DIRS [os.path.join(BASE_DIR, 'tempiates)]
3. 中間件
註釋掉 'django.middleware.csrf.CsrfViewMiddleware'
4. APP
4-1 建立APP
命令行
python manage.py startapp app名稱
pycharm
tools -> run manage.py task -> startapp app名稱
也能夠在建立項目時建立
4-2 註冊APP
# setting.py INSTALLED_APPS = [ 'app01' 或者 'app01.apps.App01Config', ]
5. form表單
1. action = '' method ='post' action 提交的地址 method 請求方式 2. 全部的input標籤要有name屬性 3. 一個input標籤的type='submit' 或者 button
五. Django 使用mysql 數據庫的流程
1. 建立一個mysql 數據庫
2. 在setting中配置DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'publisher', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 456 } }
3. 告訴Django使用pymysql鏈接數據庫
在settings統計目錄下的__init__.py寫代碼:
import pymysql pymysql.install_as_MYSQLdb()
寫表 在app下的mode.py中寫類(繼承models.Model)
class User(models.Model): # 默認表名 app01_user name = models.CharField(max_length=32) # varchar(32) pwd = models.CharField(max_length=32) def __str__(self): return self.name
4. 數據庫遷移
python manage.py makemigrations #記錄models的變動記錄 python manage.py migrate #把變動記錄的操做同步到數據庫中
六. pycharm 操做數據庫
Django相關文件總結:
此文件夾主要用於建立 HTML文件
HTML文件用於前端頁面的展現
HTMl 文件名與 url.py app下views類名有關
自行建立的文件夾,
用於存放 HTML 相關的 css js 文件 及相關庫
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app_pub.apps.AppPubConfig', #激活app操做 ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', #註釋掉 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] DATABASES = { #數據庫鏈接配置操做 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'publisher', 'HOST': '127.0.0.1', 'PORT': 3306, 'USER': 'root', 'PASSWORD': 456 } } STATIC_URL = '/static/' #配置靜態文件 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static'), ]
from django.conf.urls import url from django.contrib import admin from app_pub import views urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^index/', views.index), 1、單一路由對應 url(r'^index$', views.index), 2、基於正則的路由 url(r'^index/(\d*)', views.index), url(r'^manage/(?P<name>\w*)/(?P<id>\d*)', views.manage), 3、添加額外的參數 url(r'^manage/(?P<name>\w*)', views.manage,{'id':333}), 4、爲路由映射設置名稱 url(r'^home', views.home, name='h1'), url(r'^index/(\d*)', views.index, name='h2'), 設置名稱以後,能夠在不一樣的地方調用,如: •模板中使用生成URL {% url 'h2' 2012 %} •函數中使用生成URL reverse('h2', args=(2012,)) 路徑:django.urls.reverse •Model中使用獲取URL 自定義get_absolute_url() 方法 5、根據app對路由規則進行分類 url(r'^web/',include('web.urls')), 6、命名空間 a. project.urls.py from django.conf.urls import url,include urlpatterns = [ url(r'^a/', include('app01.urls', namespace='author-polls')), url(r'^b/', include('app01.urls', namespace='publisher-polls')), ] b. app01.urls.py from django.conf.urls import url from app01 import views app_name = 'app01' urlpatterns = [ url(r'^(?P<pk>\d+)/$', views.detail, name='detail') ] c. app01.views.py def detail(request, pk): print(request.resolver_match) return HttpResponse(pk) 以上定義帶命名空間的url以後,使用name生成URL時候,應該以下: •v = reverse('app01:detail', kwargs={'pk':11}) •{% url 'app01:detail' pk=12 pp=99 %} django中的路由系統和其餘語言的框架有所不一樣,在django中每個請求的url都要有一條路由映射,這樣才能將請求交給對一個的view中的函數去處理。其餘大部分的Web框架則是對一類的url請求作一條路由映射,從而是路由系統變得簡潔。
import os from django.core.wsgi import get_wsgi_application os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day28.settings") application = get_wsgi_application() WSGI理解爲你寫的【python代碼塊】和【Web服務器接口】 的配置文件。
# 因爲Django內部鏈接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,因此須要使用pymysql來代替 # 以下設置放置的與project同名的配置的 __init__.py文件中 import pymysql pymysql.install_as_MySQLdb()
from django.db import models # Create your models here. class Publisher(models.Model): pid = models.AutoField(primary_key=True) #主鍵 name = models.CharField(max_length=32, unique=True) #出版社名稱 主要用於數據庫建立表
from django.shortcuts import render, redirect, HttpResponse from app_pub import models # 從數據庫獲取全部出版社對象 def index(request): all_publisher = models.Publisher.objects.all().order_by('pid') return render(request, 'index.html', {'all_publisher': all_publisher}) 寫函數, 鏈接HTML與 urls.py
持續更新待續...