django基礎篇01-環境的搭建和項目的建立

本文參考自銀角大王的博客

基本配置

經常使用命令:css

 

django-admin startproject xxx(項目名)
python3 manage.py startapp xxx(app名)
python3 manage.py runserver ip:port(ip、端口)
python3 manage.py syncdb
python3 manage.py makemigrations
python3 manage.py migrate

 

1.安裝django

pip3 install django

可是我在安裝django的時候,老是遇到 Time Out錯誤,因而通過一番Goole,在使用pip3安裝django時設置超時時間便可,若是更改命令爲html

pip3 --default-timeout=1000 install -U django

2.建立django工程

方式一:命令行建立 django-admin startproject [項目名稱] #例如 django-admin startproject mysite 方式二:pycharm建立 File -> New Project ->選擇django便可

分析建立後的工程目錄結構:python

-mysite         #django工程名 -manage.py    #管理django程序 -mysite -__init__.py -setting.py #配置文件 -urls.py #url映射表,也叫url映射關係 -wsgi.py       #遵循wsgi規範,是否記得以前的wsgiref模塊, uwsgi + ngix

下面對各個模塊解釋說明:web

manage:管理django程序sql

setting:配置文件數據庫

urls:url映射關係django

wsgi:遵循wsgi規範,是否記得以前的wsgiref模塊, uwsgi + ngix瀏覽器

3.運行django程序

python3 manage.py runserver [ip:port] #例如 python3 manage.py runserver 127.0.0.1:8000

神奇的事情發生了,瀏覽器出現了一個久違的畫面app

4.建立app

首先要cd到你的工程目錄下,本文則 cd mysite,而後執行命令ide

python3 manage.py startapp blog

此時工程的目錄結構以下

-mysite -blog -migrations -__init__.py -admin.py -apps.py -models.py -tests.py -views.py -mysite -__init__.py -settings.py -urls.py -wsgi.py -db.sqlite3 -manage.py

下面進行一一解釋:

migrations:  數據修改標結構

admin:      django爲咱們提供的後臺管理

apps:    配置當前的app

models:   ORM,建立制定的類,經過命令能夠生成數據庫結構

tests:    單元測試

views:     業務代碼

5.小試牛刀

先簡單作一個登陸界面,而且記錄一下第一次建立django項目遇到的問題

建立項目,以及添加app這裏再也不贅述,上述已經作了解釋,下面上乾貨了,項目的目錄結構以下:建立了static、template 2個文件夾,一個用於存放靜態文件,一個存放模版

下面我展現一下各個文件的代碼,而後在作填坑操做:

 在login.html中咱們建立了一個表單,搭建登陸界面,代碼以下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="../static/commons.css">

    <style> label{ width: 80px;
        } #error_info{ color: red;
        }
    </style>
</head>
<body>

    <form action="/login/" method="post">
        <p id="error_info">{{ error_msg }}</p>
        <p>
            <label for="username">用戶名:</label>
            <input type="text" name="username" placeholder="請輸入用戶名">
        </p>
        <p>
            <label for="username">密碼:</label>
            <input type="password" name="pwd" placeholder="請輸入密碼">
        </p>
        <p>
            <input type="submit" value="登陸">
        </p>
    </form>

</body>
</html>
View Code

在views中咱們建立了業務相關的操做

from django.shortcuts import render from django.shortcuts import redirect def login(request): if request.method == 'POST': username =  request.POST.get('username',None) pwd = request.POST.get('pwd',None) print(username,pwd) if username == 'xm' and pwd == '123456': return redirect('https://www.baidu.com') else: return render(request,'login.html',{'error_msg': '用戶名或密碼錯誤!'})   return render(request,'login.html')
View Code

填坑操做:

坑1:

你會發現咱們在建立完項目和app後的工程目錄下,新建立了兩個文件夾,一個是static,還有一個是templates,其中static用於存放一些靜態文件,好比css,js等,templates存放一些模版,由於咱們不可能在views.py的方法中經過字符串搭建界面,一個是不方便,一個是無法調試,可是隨機而來就是若是和項目作關聯。

templates如何管理,不然一直報錯404,如何在配置呢?別怕坑我已經給你填平了,在setting.py文件中其實細心的你已經發現了有一個TEMPLATES字段,沒錯,就是在這理修改,若是你更換了目錄,也要修改這個配置文件的目錄,否側仍是404,本項目是將templates和工程目錄平級的目錄下,因此配置以下:

坑2:

在學習web的時候,咱們在html中引入外部的css時,樣式很快就是顯示出來了,但是我在static文件中建立commons.css時,在login.html中引入了,樣式卻不起做用,why?what are  you fucking?,因而掐腳一算,應該仍是和配置文件有關係,因而我就嘗試了修改配置文件,發現配置文件中除了STATIC_URL = '/static/'之外沒有和路徑有關係的啊,後來通過Google大爺找到的答案,配置以下:

STATIC_URL = '/static/'是配置文件默認的配置,此時咱們須要新增靜態文件夾的路徑配置,如上圖框框所示,注意名字必須正確,並且別忘了STATICFILES_DIRS是一個元組,必須在元素後面加','

坑3:

在urls.py文件中默認配置以下:

from django.contrib import admin from django.urls import path from blog import views urlpatterns = [ path('admin/', admin.site.urls), ]

咱們的登陸頁面也要再次配置,因此咱們仿照默認配置加上本身的配置

from django.contrib import admin from django.urls import path from blog import views urlpatterns = [ path('admin/', admin.site.urls), path('login/', views.login) ]

彷佛一切準備就緒,咱們運行項目發現一切安好,效果出來了,

注意到咱們的login.html文件中表單的action了嗎?咱們寫的action='/login' method='post',意味着咱們提交給的仍是本頁面,請求方式爲post請求

當咱們填寫完信息後,點擊提交按鈕後,坑來了,報錯了,這事什麼問題,有事找Google啊,找了好半天,找到問題了,由於出如今urls.py上,

解決辦法以下:

以前咱們在urls.py中配置過login對應方法,由於咱們是根據默認配置寫的,出什麼問題?不該該啊,但是真的就是這個配置問題,問題就出如今'login/'這個斜槓上

解決辦法有兩種:

第一種: 修改urls.py,去掉path('login/', views.login)後面的斜槓,爲path('login', views.login)

第二種: 修改login.html,將<form action="/login" method="post">修改成<form action="/login/" method="post">

推薦使用第一種,統一urls.py文件的格式。

這樣文件就解決了,但是隨之而來的還有一個問題,也就是坑4了,繼續往下看吧

坑4:

在解決了坑3問題後,咱們點擊提交按鈕後,發現又報了另外一個錯,what funck your 祖宗?

幸好這個問題不是那麼噁心,不然果斷棄坑,只須要將settings.py中的一行代碼註釋,便可發送請求了。

刷新點擊「提交」按鈕,你會發現,一切是那麼美好和值得。

相關文章
相關標籤/搜索