摘要:入門項目創(chuàng)建和創(chuàng)建準備環(huán)境項目創(chuàng)建創(chuàng)建進入項目路徑創(chuàng)建路由文件項目結(jié)構(gòu)如下項目注冊在此處注冊項目路由注冊注冊的此時,一個完整的流程就好了修改的路由寫一個視圖函數(shù)函數(shù)視圖的定義
Django入門 項目創(chuàng)建和APP創(chuàng)建
準備環(huán)境
python3 virtualenv pip3 pip3 install django==1.1
項目創(chuàng)建,APP創(chuàng)建
django-admin startproject ops cd ops python3 manage.py startapp darshboard cd darshboard #進入項目路徑 touch urls.py #創(chuàng)建路由文件
項目結(jié)構(gòu)如下:
ops/ |-- darshboard | |-- admin.py | |-- apps.py | |-- __init__.py | |-- migrations | |-- models.py | |-- tests.py | |-- urls.py | `-- views.py |-- db.sqlite3 |-- manage.py `-- ops |-- __init__.py |-- settings.py |-- urls.py `-- wsgi.py
項目注冊
# vim ops/ops/settings.py INSTALLED_APPS = [ "django.contrib.admin", "django.contrib.auth", "django.contrib.contenttypes", "django.contrib.sessions", "django.contrib.messages", "django.contrib.staticfiles", "darshboard.apps.DarshboardConfig" #在此處注冊darshboard項目 ]
路由注冊
# vim ops/ops/urls.py from django.conf.urls import url,include from django.contrib import admin urlpatterns = [ url(r"^admin/", admin.site.urls), url(r"^darshboard/",include("darshboard.urls")), #注冊app的urls ]
此時,一個完整的流程就好了hello world 修改darshboard的路由
# vim ops/darshboard/urls.py from django.conf.urls import url from .views import index urlpatterns = [ url(r"^hello/", index,name="index"), ]寫一個視圖函數(shù)
函數(shù)視圖的定義:
a. 就是一個普通函數(shù)
b. 接收一個HttpRequest實例作為第一個參數(shù)
c. 然后返回一個HttpResponse的實例
# vim ops/darshboard/views.py from django.shortcuts import render from django.http import HttpResponse def index(request): return HttpResponse("hello world")項目啟動&測試
啟動項目
python manage.py runserver 0:8080
訪問:
打開本地瀏覽器輸入:
http://211.159.156.251:8080/darshboard/hello/
即可訪問!
HttpRequest對象由Django創(chuàng)建
屬性如下:
HttpRequest.scheme HttpRequest.body HttpRequest.path HttpRequest.method HttpRequest.encoding HttpRequest.GET HttpRequest.POST HttpRequest.META
方法如下:
HttpRequest.get_host() HttpRequest.get_port() HttpRequest.get_full_path() HttpRequest.is_secure() HttpRequest.is_ajax()
傳遞一個字符串作為頁面的內(nèi)容到HttpResponse構(gòu)造函數(shù)
from django.http import HttpResponse response = HttpResponse("here is the web page") response = HttpResponse("Text only .please,content_type="text/plain")
參考的views如下
from django.shortcuts import render from django.http import HttpResponse,JsonResponse import json def index(request): data = { "name":"wanghui", "age":20 } data_1 = ["devops","python"] #return HttpResponse(json.dumps(data),content_type="application/json") #返回的content-typet #return HttpResponse(json.dumps(data_1),content_type="application/json") return JsonResponse(data_1,safe=False) # return HttpResponse("Hello World!!",status=599)模板
為了讓數(shù)據(jù)更加美觀。
POST和GET請求GET請求與傳參
- method - GET
POST提交數(shù)據(jù)
QueryDict對象方法練習
# python manage.py shell >>> from django.http import QueryDict >>> data = QueryDict("a=12&a=123&b=233") >>> data.urlencode() "a=12&a=123&b=233"數(shù)據(jù)庫同步
官方給出的數(shù)據(jù)庫連接設(shè)置
https://docs.djangoproject.com/en/1.11/ref/settings/#databases
數(shù)據(jù)庫同步相關(guān)命令
python manage.py showmigrations python manage.py sqlmigrate sessions 0001 python manage.py dbshell # 進入shell模式創(chuàng)建用戶
django-shell創(chuàng)建用戶
# 方式一: (venv3) [wanghui@www ops]$ python manage.py shell Python 3.6.1 (default, Jun 22 2018, 18:25:52) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth.models import User >>> User.objects.create_user("rock","12272@qq.com","123456") #創(chuàng)建普通用戶 >>> u = User.objects.get(username="rock") #查找用戶 >>> u.set_password("654321") #修改密碼 >>> u.save() #保存 ------------------------------------------------------------------------------------------------------------- # 方式二: (venv3) [wanghui@www ops]$ python manage.py createsupperuser用戶登錄小練習
重點在于對函數(shù)視圖的練習
darshboard/views.py
from django.shortcuts import render from django.http import HttpResponse,JsonResponse,QueryDict from django.template import loader,Context,Template from django.contrib.auth.models import User from django.contrib.auth import login,authenticate def user_login(request): # print(request.GET) # 獲取提交過來的用戶名&密碼 if request.method == "GET": #get請求的話,就直接返回頁面 return render(request, "user_login.html") elif request.method == "POST": #post就要獲取用戶名和密碼 username = request.POST.get("username") password = request.POST.get("password") # 根據(jù)用戶名取出這個記錄是否存在 user_obj = authenticate(username=username,password=password) if user_obj: login(request,user_obj) print("登陸成功!") else: print("登陸失敗!") elif request.method == "DELETE": # 通過delete方法獲取請求體 data = QueryDict(request.body) # 獲取delete的請求體 print(data) return HttpResponse("")
darshboard/urls.py #指定路由
from django.conf.urls import url,include from django.contrib import admin from .views import index,index_template,index_methods,user_login urlpatterns = [ url(r"^user_login",user_login) ]
darshboard/user_login.html
關(guān)于delete方法的請求方式
在linux本地機器上執(zhí)行: curl -XDELETE http://127.0.0.1:8080/darshboard/user_login/ -d username=rock -d password=654321
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/41891.html
摘要:原文地址在兩篇文章幫你入門上一文中,我們已經(jīng)做了一個簡單的小網(wǎng)站,實現(xiàn)了保存用戶數(shù)據(jù)到數(shù)據(jù)庫,以及從后臺數(shù)據(jù)庫讀取數(shù)據(jù)顯示到網(wǎng)頁上這兩個功能。注意測試時并不需要運行服務(wù),這樣能節(jié)省服務(wù)的開銷,提高測試的速度。 原文地址 在兩篇文章幫你入門Django(上)一文中,我們已經(jīng)做了一個簡單的小網(wǎng)站,實現(xiàn)了保存用戶數(shù)據(jù)到數(shù)據(jù)庫,以及從后臺數(shù)據(jù)庫讀取數(shù)據(jù)顯示到網(wǎng)頁上這兩個功能。 看上去沒有什么問...
摘要:本人年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學習,記錄自己的學習記錄。 本人java10年開發(fā)經(jīng)驗,現(xiàn)就職于電信,因工作需要學習python,記錄自己的學習記錄。后面也...
摘要:轉(zhuǎn)載說明來源添加全文搜索功能入門一使用的工具是的開源搜索框架,該框架支持搜索引擎,不用更改代碼,直接切換引擎,減少代碼量。修改如下添加修改為如下第二步在中修改引擎,如下第三步重建索引,在進行搜索中文試試吧。 感覺網(wǎng)絡(luò)上關(guān)于Django全文搜索的中文文章太少,并且講的也不是很到位,就是簡單介紹了怎么配置,并沒有說這樣配置有什么用,所以依然很迷茫。所以希望我這篇文章能夠幫助到后來人。 轉(zhuǎn)...
閱讀 1543·2023-04-25 18:56
閱讀 1496·2021-09-29 09:34
閱讀 1716·2021-09-22 15:51
閱讀 3506·2021-09-14 18:03
閱讀 1168·2021-07-23 17:54
閱讀 2027·2019-08-29 18:38
閱讀 2908·2019-08-29 12:38
閱讀 618·2019-08-26 13:41