小白神器 - Django - 起步

小白神器 - 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類名有關
templates文件夾
自行建立的文件夾,
用於存放 HTML 相關的 css js 文件 及相關庫
static 文件夾
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'),
]
sttings.py
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請求作一條路由映射,從而是路由系統變得簡潔。
urls.py
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服務器接口】 的配置文件。
wsgi.py
# 因爲Django內部鏈接MySQL時使用的是MySQLdb模塊,而python3中還無此模塊,因此須要使用pymysql來代替
# 以下設置放置的與project同名的配置的 __init__.py文件中
 
import pymysql
pymysql.install_as_MySQLdb() 
__init__.py(settings同級)

 

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) #出版社名稱


主要用於數據庫建立表
app 下 models.py
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
app 下views.py

 


  持續更新待續...

相關文章
相關標籤/搜索