成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

django基礎(chǔ)(一)

williamwen1986 / 2840人閱讀

摘要:基礎(chǔ)一項(xiàng)目的創(chuàng)建和啟動(dòng)項(xiàng)目容器是實(shí)際的項(xiàng)目包配置文件路由文件實(shí)用的命令行工具數(shù)據(jù)庫(kù)配置文件更改服務(wù)啟動(dòng)新建項(xiàng)目方法一方法二和的區(qū)別一個(gè)項(xiàng)目下有多個(gè)一對(duì)多的關(guān)系配置注冊(cè)視圖函數(shù)視圖函數(shù)配置配置啟動(dòng)項(xiàng)目對(duì)象是在這個(gè)模塊中是有創(chuàng)建官方文檔常

django基礎(chǔ)-(一) 項(xiàng)目的創(chuàng)建和啟動(dòng)
(venv3) [vagrant@localhost ~]$ cd /vagrant/
(venv3) [vagrant@localhost vagrant]$ django-admin startproject devops
(venv3) [vagrant@localhost vagrant]$ tree devops/
devops/      #項(xiàng)目容器
├── devops     #是實(shí)際的python項(xiàng)目包
│ ├── __init__.py
│ ├── settings.py   #配置文件
│ ├── urls.py     #路由文件
│ └── wsgi.py
└── manage.py     #實(shí)用的命令行工具
(venv3) [vagrant@localhost vagrant]$ vim devops/devops/settings.py    #數(shù)據(jù)庫(kù)配置文件更改
DATABASES = {
   "default": {
       "ENGINE": "django.db.backends.mysql",
       "NAME": "devops",
       "USER": "root",
       "PASSWORD": "123456",
       "HOST": "localhost",
       "PORT": 3306,
          "OPTIONS":{
           "init_command": "SET default_storage_engine=INNODB;",
           },
    }
}

服務(wù)啟動(dòng)

(venv3) [vagrant@localhost devops]$ python manage.py runserver 0:8000

新建項(xiàng)目

(venv3) [vagrant@localhost devops]$ python manage.py startapp dashboard     #方法一
(venv3) [vagrant@localhost devops]$ django-admin startapp dashboard1           #方法二

startproject和startapp的區(qū)別

一個(gè)項(xiàng)目下有多個(gè)app(一對(duì)多的關(guān)系)

配置url

(venv3) [vagrant@localhost devops]$ vim dashboard/urls.py
from django.conf.urls import url
urlpatterns = [
]

注冊(cè)app

(venv3) [vagrant@localhost devops]$ vim devops/settings.py
INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "dashboard"
]
hello world

視圖函數(shù)

(venv3) [vagrant@localhost devops]$ vim dashboard/views.py
from django.shortcuts import render
from django.http import HttpResponse
#視圖函數(shù)
def index(request):
    return HttpResponse("hello world")

配置app url

(venv3) [vagrant@localhost devops]$ vim dashboard/urls.py
from django.conf.urls import url
from .views import index
urlpatterns = [
    url(r"^$",index,name="index")
]

配置project url

(venv3) [vagrant@localhost devops]$ vim devops/urls.py
from django.conf.urls import url,include
from django.contrib import admin
urlpatterns = [
    url(r"^admin/", admin.site.urls),
    url(r"^dashboard/",include("dashboard.urls"))
]

啟動(dòng)項(xiàng)目

(venv3) [vagrant@localhost devops]$ python3 manage.py runserver 0:8000
HttpRequest對(duì)象

是在django.http這個(gè)模塊中

是有django創(chuàng)建

官方文檔docs

常用的屬性:

request.body     -----b""
request.scheme -----http
request.path ---- /dashboard/
request.method --- GET
request.GET
request.POST
request.META
HttpResponse對(duì)象

HttpResponse:返回字符串

JsonResponse:返回字典,注意safe=False是針對(duì)于列表類型

GET與POST請(qǐng)求
- GET
request.GET
request.GET.get("xx")
request.GET.getlist("oo")
- POST
request.GET
request.GET.get("xx")
request.GET.getlist("oo")
Querydict
In [1]: from django.http import QueryDict                                                                  
In [2]: QueryDict("aa=bb&cc=dd&cc=xxx")                                                                    
Out[2]: 
In [3]: q = QueryDict("aa=bb&cc=dd&cc=xxx")                                                         
In [4]: QueryDict.fromkeys(["a","b","a"],value="val")                                                      
Out[4]: 
In [5]: q                                                                                                  
Out[5]: 
In [6]: q.dict()                                                                                           
Out[6]: {"aa": "bb", "cc": "xxx"}
In [7]: q.urlencode()                                                                                      
Out[7]: "aa=bb&cc=dd&cc=xxx"
DELETE&PUT請(qǐng)求

請(qǐng)求返回都在request.body中

視圖函數(shù)

def index_2(request):
    if request.method == "GET":
        print("request get =",request.GET)
        data = request.GET.copy()
        data["aa"] = "xxxxxx"
        print("data =",data)
        print("aa =",request.GET.get("aa"))       #取出單個(gè)值
        print("cc =",request.GET.getlist("cc"))   #取出多個(gè)值
    elif request.method == "POST":
        print("request post =",request.POST)
        print("aa =",request.POST.get("aa"))
        print("cc =",request.POST.getlist("cc"))

    elif request.method == "DELETE":
        print("delete=",QueryDict(request.body))

    elif request.method == "PUT":
        print("put=",QueryDict(request.body))

    return HttpResponse("")

請(qǐng)求方式:

In [1]: import requests                                                                             
In [2]: url = "http://127.0.0.1:8000/dashboard/"    
In [3]: data = {}                                                                                         
In [4]: data["aa"] = "bb"                                                                              
In [5]: data["cc"] = ["dd","ee"]      
In [9]: requests.delete(url,data=data)                                                     Out[9]: 
In [10]: requests.put(url,data=data)                                                         Out[10]: 
用戶登錄練習(xí)

視圖函數(shù)

def login(request):
    msg = ""
    if request.method == "POST":
        username = request.POST.get("username")
        userpass = request.POST.get("userpass")
        if username == "admin" and userpass == "123456":
            msg = "login success"
        else:
             msg = "login failed"
    else:
         msg = "請(qǐng)求方法不被允許!"
     returnHttpResponse(msg) 

post請(qǐng)求方法

In [11]: url = "http://192.168.33.10/login/"                                       
In [12]: data = {}                                                                                       
In [13]: data["username"] = "admin"                                                         
In [14]: data["userpass"] = "123456"   
In [16]: r = requests.post(url,data)  
In [18]: r.content.decode("utf8")  
用戶創(chuàng)建
(venv3) [vagrant@localhost devops]$ python3 manage.py shell
(venv3) [vagrant@localhost devops]$ python3 manage.py dbshell
(venv3) [vagrant@localhost devops]$ python3 manage.py showmigrations
(venv3) [vagrant@localhost devops]$ python3 manage.py makemigrations
(venv3) [vagrant@localhost devops]$ python3 manage.py migrate
-----------------------------------創(chuàng)建用戶--------------------------------------
(venv3) [vagrant@localhost devops]$ python3 manage.py shell
In [1]: from django.contrib.auth.models import User                                                        
In [2]: User.objects.create_user("wanghui","[email protected]","123456")      #創(chuàng)建普通用戶
In [3]: User.objects.create_superuser("admin","[email protected]","123456")                  #創(chuàng)建超級(jí)管理員

---------修改密碼-------------------------------------------------------

In [5]: u = User.objects.get(username="wanghui")                                                           
In [6]: u.set_password("654321")                                                                           
In [7]: u.save()       

---------刪除用戶----------------------------

用戶登錄
步驟:
一個(gè)視圖
GET請(qǐng)求:展示登陸頁(yè)面
POST請(qǐng)求:執(zhí)行用戶登陸
                   1. 接收用戶post過(guò)來(lái)的用戶名密碼
                    2. 驗(yàn)證用戶名密碼
                    3. 返回結(jié)果

視圖函數(shù)

from django.contrib.auth.models import User
from django.contrib.auth import login,authenticate
def LoginView(request):
    if request.method == "POST":
        username = request.POST.get("username")
        userpass = request.POST.get("userpass")
        # try:
        # User.objects.get(username=username)
        # except User.DoesNotExist:
        # return HttpResponse("用戶不存在!")
        user = authenticate(request,username=username,password=userpass)
        if user is not None:
            login(request,user)
            return HttpResponse("用戶登錄成功")
        else:
            return HttpResponse("用戶登錄失敗")
    return render(request, "login.html")

模板文件




    
    用戶登錄


  • username
  • password
  • 路由

    from django.conf.urls import url
    from . import views
    urlpatterns = [
        url(r"^$",views.index,name="index"),
        url(r"^index2/$",views.index_1,name="index_1"),
        url(r"^login/$",views.loginv1,name="login"),
        url(r"^loginv2/$",views.LoginView,name="loginv2"),
    ]

    文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

    轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/53234.html

    相關(guān)文章

    • django基礎(chǔ)

      摘要:基礎(chǔ)一項(xiàng)目的創(chuàng)建和啟動(dòng)項(xiàng)目容器是實(shí)際的項(xiàng)目包配置文件路由文件實(shí)用的命令行工具數(shù)據(jù)庫(kù)配置文件更改服務(wù)啟動(dòng)新建項(xiàng)目方法一方法二和的區(qū)別一個(gè)項(xiàng)目下有多個(gè)一對(duì)多的關(guān)系配置注冊(cè)視圖函數(shù)視圖函數(shù)配置配置啟動(dòng)項(xiàng)目對(duì)象是在這個(gè)模塊中是有創(chuàng)建官方文檔常 django基礎(chǔ)-(一) 項(xiàng)目的創(chuàng)建和啟動(dòng) (venv3) [vagrant@localhost ~]$ cd /vagrant/ (venv3) [v...

      MudOnTire 評(píng)論0 收藏0
    • 利用Django開發(fā)個(gè)小型商城(

      摘要:利用開發(fā)個(gè)小型商城我們本期的教程是教大家如何利用開發(fā)一個(gè)小型的商城這里所說(shuō)的小型商城只是功能上的簡(jiǎn)樸。并于年月在許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手來(lái)命名的。是重量級(jí)選手中最有代表性的一位。 利用Django開發(fā)個(gè)小型商城 我們本期的教程是教大家如何利用Django開發(fā)一個(gè)小型的商城,這里所說(shuō)的小型商城只是功能上的簡(jiǎn)樸。 作者:黃志成(小黃) 作者博客:博客地址 前提 1...

      RobinTang 評(píng)論0 收藏0
    • Django學(xué)習(xí)——Django基礎(chǔ)1

      摘要:將業(yè)務(wù)邏輯,數(shù)據(jù)和界面顯示分開,功能劃分清晰,有利于降低軟件的耦合度和團(tuán)隊(duì)開發(fā)。主要的作用就是將一個(gè)請(qǐng)求分發(fā)到不同的處理,再調(diào)用相應(yīng)的和關(guān)于的安裝及使用將在下一章共同學(xué)習(xí)。 Django 簡(jiǎn)單介紹django和mvc,mvt設(shè)計(jì)模式,如果已知悉可以直接跳過(guò)。 什么是Django 是由python寫的一個(gè)開源的web應(yīng)用程序框架,于2005年7月初次發(fā)布,并在2008年9月發(fā)布了第一個(gè)正...

      trilever 評(píng)論0 收藏0
    • Django搭建個(gè)人博客:前言

      摘要:是一個(gè)由寫成的開源應(yīng)用框架,可以用它以更快的速度更少的代碼,搭建一個(gè)高性能的網(wǎng)站。本教程為零基礎(chǔ)的小白準(zhǔn)備,教你快速搭建一個(gè)自己的博客網(wǎng)站。讓我們趕緊開始旅程吧有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。 Django是一個(gè)由Python寫成的開源Web應(yīng)用框架,可以用它以更快的速度、更少的代碼,搭建一個(gè)高性能的網(wǎng)站。 如果你以前從未接觸過(guò)web開發(fā),并且想快速上線自己的個(gè)性化網(wǎng)站,D...

      _ivan 評(píng)論0 收藏0

    發(fā)表評(píng)論

    0條評(píng)論

    最新活動(dòng)
    閱讀需要支付1元查看
    <