Django的第一步(第一節)

寫下你的第一個Django應用


第一部分

????讓我們通過例子來學習.

????在本教程中,我們將引導您完成基本投票應用程序的創建.

????其中包括兩部分:

  • 一個讓人們查看民意調查并投票的公共網站.
  • 允許您添加,更改和刪除民意調查的管理網站.

????我們假設你django已經安裝好了,你可以通過下面的shell命令得知django的版本:

python -m django --version

????如果django已經安裝好了,你可以看到安裝的版本.如果沒有,你會得到錯誤提示"No module named django".

????這個教程基于django2.0,支持python3.4以及后面的版本.如果django的版本不匹配,可以在右下角選擇合適的版本,或者升級django版本.如果你正在使用老版本的python,你可以根據下圖去找到合適的點擊django版本.



創建一個項目

????如果這是你第一次使用django,你會關心一些初始化設置.換句話說,你需要下面的指令自動生成一個django項目,其中包含數據庫配置,django特定的選項和應用特定的選項.

????從命令行,cd進入你想創建django項目的文件夾,然后執行下面的指令:????

django-admin startproject mysite

????這條命令將會在你的文件夾中創建一個mysite文件夾.

注釋:

? ? 你需要避免在創建django項目與python或django內置組件相同,尤其是,你應該避免使用django(與django本身發生沖突)或者test(與python內置文件沖突).

代碼應該放置在哪?

????如果你的背景是普通的舊PHP(沒有使用現代框架),那么你可能習慣于把代碼放在Web服務器的文檔根目錄下(比如/ var / www).用Django,你不這樣做.將任何Python代碼放入Web服務器的文檔根目錄中并不是一個好主意,因為它有可能讓人們能夠通過Web查看您的代碼.這樣安全性不好.? ??

????將代碼放在文檔根目錄之外的某個目錄中,例如/ home / mycode.

讓我們看看startproject這個指令都創建了什么:

mysite/manage.pymysite/__init__.pysettings.pyurls.pywsgi.py
下面解釋這些文件:
  • 外部的mysite/是你項目的容器.它的名字不影響django;你可以隨你喜歡地修改名字
  • manage.py:一個代碼管理工具,可以讓你用各種方式與django進行交互.你可以讀到關于manage.py的所有功能在django-admin and manage.py
  • 內部的mysite/是你django項目的實際文件夾.它的名字是你需要用來導入任何內容的Python包名(例如:mysite.urls)
  • mysite/__init__.py:一個空的文件用來告訴python,這個文件夾是一個python包.如果你是一個python初學者,建議你先了解一下python包的含義
  • mysite/setting.py:用于配置django的設置.通過django settings可以了解到settings的工作方式
  • mysite/urls.py:django項目的url管理器,可以設置你django項目可以訪問的網頁url.通過URL dispatcher可以了解更多關于URLS
  • mysite/wsgi.py:WSGI兼容的Web服務器為您的項目提供服務的入口點

---------------------------------------------------------------------------------------------------------------------

開發服務器

? ? 讓我們檢驗我的django項目.進入外部mysite目錄,運行下面的指令:

python manage.py runserver

? ? 你可以看到下面的命令行輸出? ??

Performing system checks...System check identified no issues (0 silenced).You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.April 11, 2018 - 19:22:09
Django version 2.0.4, using settings 'blogproject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
注釋:

????現在請忽略數據庫遷移的問題,這個問題會在稍后進行處理.

? ? 你已經開始使用django開發服務器了,這是一個純粹用Python編寫的輕量級Web服務器.這些功能我們已經在django中包含了,所以你可以很快地進行開發,你可以直接進行開發,不需要去配置生產服務器,比如像Apache這樣的網頁服務器.

? ? 注意注意!不要在類似于生產環境的任何情況下使用此服務器。它僅用于開發時使用。 (我們的業務是制作Web框架,而不是Web服務器。)????

? ? 現在服務器正在運行,可以通過http://127.0.0.1:8000/來訪問你的網頁,你可以看到"The install worked successfully! Congratulations!",還有一個起飛的火箭,說明它正在工作.

切換端口:

? ? runserver這個命令默認會以8000作為端口號開啟服務器.

? ? 如果你想要改變服務器的端口號,將它作為命令的參數輸入.下面是個例子,這個命令開啟服務器在8080端口上:

python manager.py runserver 8080

? ? 你如果你想改變服務器的IP地址,將ip地址與端口號一起作為參數傳遞即可,如果出現錯誤,如下

Invalid HTTP_HOST header: '127.1.1.1:8080'. You may need to add '127.1.1.1' to ALLOWED_HOSTS.

? ? 說明你需要把該IP加入setting.py文件中ALLOWED_HOSTS中即可.

? ? 如果你想收聽所有可用的公共IP(如果你正在運行Vagrant或希望在網絡上的其他計算機上炫耀你的工作,這很有用),請使用:

python manage.py runserver 0:8000
00.0.0.0的簡稱.有關開發服務器的完整文檔可以在runserver參考中找到。

????

自動重新加載服務器:

? ??您無需重新啟動服務器以使代碼更改生效。但是,某些操作(如添加文件)不會觸發重新啟動,因此在這種情況下您必須重新啟動服務.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

創建一個Polls應用:

? ? 現在你的服務器環境已經搭建好了,你可以開始工作了.

? ? 你在django中編寫的每一個應用都遵循特定的python包.?django帶有一個實用的工具可以自動生成應用的基本目錄結構,所有你可以把注意力放在寫代碼上而不是創建文件目錄.

項目對比應用:

? ? 項目和應用的不用是什么呢?應用是網頁應用程序,它可以執行一些操作,比如公共記錄數據庫或者簡單的投票系統.項目是一個特定網頁配置和網頁應用程序的集合,一個項目可以包含多個應用,一個應用可以在多個項目中.

? ? 你的所有應用可以在你python路徑上的任何地方.在本教程中,我們會創建Poll應用與manage.py文件同一個路徑下,所以它可以被直接作為主模塊被調用,而不是作為mysite的子模塊.

? ? 創建你的應用,確認你已經進入了與manage.py同目錄下,然后執行下面的目錄:

python manage.py startapp polls

? ? 這個命令創建了polls文件夾,?其中目錄像下面這樣:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyviews.py
? ? 這個文件夾將包含我們的投票系統應用.

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------

編寫你的第一個視圖:

? ? 讓我們編寫第一個視圖.打開polls/views.py這個文件然后將下面的python代碼寫入:

polls/views.py中? ?? ??

from django.http import HttpResponsedef index(request):return HttpResponse("Hello, world. You're at the polls index.")

? ? 這是可能是django中最簡單的視圖了.要調用這個視圖,我們需要將它映射到一個URL - 為此我們需要一個URLconf.

? ? 需要創建一個URLconf在polls文件夾中.創建一個文件叫做urls.py.你的文件夾現在應該是這樣:

polls/__init__.pyadmin.pyapps.pymigrations/__init__.pymodels.pytests.pyurls.pyviews.py

? ? 在polls/urls.py文件中加入下面的代碼:

polls/urls.py文件中

from django.urls import pathfrom . import viewsurlpatterns = [path('',views.index, name='index'),
]

? ? 下一步是將根的URLconf指向polls.urls模塊.在mysite/urls.py添加導入django.urls.include然后在urlpatterns列表中添加一個include(),以便導入polls.urls模塊:

mysite/urls.py文件中

from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),path('polls/',include('polls.urls')),
]

????include()函數允許訪問其他的URLconf.任何時候django碰到include()函數,它會暫停在這個URL在當前URLconf中的匹配,轉而進入include函數中的URLconfs中找尋匹配.

? ? include()函數的主要想法是讓引用URLs更加方便.因為投票是在自己的URLconf中(polls/urls.py),他們可以被放置在"/polls/"之下,或者"/fun_polls/"之下,或者"/content/polls/"之下,或者其他根目錄之下,這個應用都可以工作.

什么時候使用include()函數?
? ? 你應該總是使用include()函數當你要添加其他URL模型時.admin.site.urls 是唯一一個不可以使用的例外.

? ? 你現在已經將一個視圖連接到URLconf了,現在驗證它是否工作,運行下面的指令:

python manage.py runserver

? ? 通過瀏覽器訪問http://localhost:8000/polls/,然后你應該可以看到"Hello, world. You’re at the polls index.",這些是你在index中寫下的.

? ? path()函數會傳遞四個參數,其中兩個是必須的:路徑(route)視圖(view),兩個可以可選屬性:kwargs名字(name).我們需要回顧一下這四個參數.

路徑(route)

路徑是一個字符串,包含了URL模型.處理請求時,django從urlpattens第一個URL開始往下,匹配請求的URL,直到找到一個匹配的URL.

視圖(view)

當django找到匹配的URL模式,它將HttpRequest對象作為第一個參數并將路由中的任何“捕獲”值作為關鍵字參數調用指定的視圖函數.我們將稍微舉一個例子.

kwargs
關鍵字參數可以在字典中傳遞給目標視圖,我們不打算在教程中使用Django的這個特性。

名字(name)

命名你的URL可以讓你從django其他地方明確地引用它,特別是在模板中.這個強大的功能允許你只在單個文件中對項目的URL模式進行全局修改.

如果你對基本請求和響應流程這一節感到滿意,請閱讀本教程的第2節以開始使用數據庫。








轉載于:https://www.cnblogs.com/GF66/p/9785489.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/280634.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/280634.shtml
英文地址,請注明出處:http://en.pswp.cn/news/280634.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ad中電源插座怎么封裝_您可以在房屋中安裝的各種電源插座

ad中電源插座怎么封裝You may already know about smart outlets, or outlets with integrated USB ports. But you might be surprised at how many “normal” outlets you can actually buy for your house. They’re all built for different situations, and you want to …

Arithmetic Slices

這兩天一直復習動態規劃,就想到leetcode上刷刷題,easy難度的很少,大部分都是medium和hard。本題是第一道DP類型medium難度的題目,但是用其他的方法比如暴力法也可以求解。首先來看題目描述: A sequence of number is c…

在Data Lake Analytics中使用視圖

在Data Lake Analytics中使用視圖 1. 概述 在Data Lake Analytics(以下簡稱DLA)中使用視圖(VIEW)功能,可以大大簡化對于重復SQL,特別是較為復雜的SQL語句的編寫和維護。目前DLA中還不支持SQL視圖的物化。在…

C# 實例詳解委托之Func、Action、delegate(精品)

概述委托是.NET編程的精髓之一,在日常編程中經常用到,在C#中實現委托主要有Func、Action、delegate三種方式,本節主要就這三種委托的用法通過實例展開講解。Func用法解析【Func】:Func是帶返回值的委托:原型函數如下(以…

Django05-2:路由分發/命名空間/偽靜態/虛擬環境/django版本區別

路由分發 補充:每一個應用可以有獨立的templates模板文件夾,static靜態文件加,urls.py 總路由 #方法一from app01 import urls as app01_urls from app02 import urls as app02_urlsurlpatterns [url(r^publisher_list/, views.publisher_…

Word中查找替換軟回車鍵和回車鍵

在Word中使用搜索功能搜索“^p”組合字符串可以查找文檔中的所有換行符(回車鍵),使用“^l”(英文輸入狀態下shift6與小寫字符L的組合)可以搜索所有的軟回車符。使用替換功能就可以搜索替換二者。轉載于:https://www.cn…

minecraft服務器_如何使用Minecraft領域設置簡單的無壓力Minecraft服務器

minecraft服務器There are a lot of ways to go about hosting a Minecraft game but it’s tough to beat the simplicity of buying a server directly from Mojang, the company behind Minecraft (and now it even comes with a free 30 day trial!) Read on as we show yo…

自動化測試基礎篇--Selenium瀏覽器操作

Selenium 主要提供的是操作頁面上各種元素的方法,但它也提供了操作瀏覽器本身的方法,比如瀏覽器的大小以及瀏覽器后退、前進按鈕等。一、控制瀏覽器窗口大小有時候我們希望能以某種瀏覽器尺寸打開,讓訪問的頁面在這種尺寸下運行。例如可以將瀏…

Sublime text3配置xdebug調試記錄

第一次配置遇到的問題記錄; 問題:配置php.ini的時候xdebug.remote_port 9001剛開始我一直配置9000端口沖突,然后一切弄好了訪問瀏覽器就一直在轉圈無法訪問; 現在開始配置: 1.打開sublime 輸入install Package如下顯示在按回車&a…

.NET Conf China 2022 今天(12.4) 日程一覽

點擊藍字關注我們.NET Conf China 2022 誠邀您的加入立即掃碼預約加入.NET年度盛宴!!CSDN 直播https://bbs.csdn.net/forums/DotNET?typeId20680 思否直播https://segmentfault.com/area/dotnetconf-2022主論壇分論壇前端專場-A會場出品人:張…

移動web開發適配rem

移動的meta標簽 <meta name"viewport" content"widthdevice-width, initial-scale1,user-scalableno"> 常見移動web適配方法&#xff1a; 1.定高&#xff0c;百分比布局 2.flex布局 3.media媒體查詢 rem&#xff08;font size of the root element…

Django06:視圖層/上傳文件/request 方法補充/FBV與CBV

三板斧 HttpResponse, 返回字符串類型render, 返回html頁面&#xff0c;而且在返回給瀏覽器之前&#xff0c;可以給html文件傳值redirect 重定向 總結&#xff1a;視圖函數必須返回一個HttpResponse對象&#xff0c; 查看源代碼能發現。 JsonResponse對象 json用途&#x…

《Java核心技術 卷Ⅱ 高級特性(原書第10版)》一2.4.6 為克隆使用序列化

2.4.6 為克隆使用序列化 序列化機制有一種很有趣的用法&#xff1a;即提供了一種克隆對象的簡便途徑&#xff0c;只要對應的類是可序列化的即可。其做法很簡單&#xff1a;直接將對象序列化到輸出流中&#xff0c;然后將其讀回。這樣產生的新對象是對現有對象的一個深拷貝&…

談談ASP.NET Core過濾器和中間件的區別

什么是中間件中間件Middleware是所有請求都會執行的,適合用在權限校驗,一些公用字段處理,例如分頁信息獲取.asp.net core 提供了IApplicationBuilder接口來讓把中間件注冊到asp.net的管道請求當中去&#xff0c;中間件是一個典型的AOP應用。下面是一個微軟官方的一個中間件管道…

11 個 Nginx 參數性能優化工作

工作上&#xff0c;需要配置 Nginx&#xff0c;要投入生產使用&#xff0c;做了一點優化工作&#xff0c;加上以前也經常折騰 Nginx&#xff0c;故記下一些優化工作。 優化 Nginx 進程數量 配置參數如下&#xff1a; worker_processes 1; # 指定 Nginx 要開啟的進程數&#xff…

如何在Windows 8中將舊控制面板添加到Metro Start屏幕

By default there is no way to easily access the old Control Panel in Windows 8, in order to get to it you have to go through the new Metro Control Panel or switch to Explorer. Here’s how to create your own tile for it. 默認情況下&#xff0c;無法輕松訪問Wi…

vue子父組件間傳值

父組件傳值給子組件 props方式   父組件上1處聲明傳遞的鍵并賦值&#xff0c;子組件2處使用props接收一下這個鍵就可以使用了。在父組件改變這個值的話子組件跟著一起響應&#xff0c;子組件改變這個值的話父組件不改變。次為響應式&#xff0c;但是也僅限于父組件的值變化子…

Django07:模板語法/標簽/inclusion_tag/模版的繼承

模板語法傳值 列表&#xff1a;l[a,b,c] 集合&#xff1a;se{‘a’,yy,ss} 元組&#xff1a;t(111,222,333) render(request.index,html,locals()) 語法規律 {{}}:變量相關 {%%}:邏輯相關 {{func}} 會自動加括號執行&#xff0c;但不支持帶參數&#xff1b; 帶參數會不…

紅象云騰發布新一代PB級高速大數據平臺產品

ZD至頂網服務器頻道 03月23日 新聞消息&#xff1a;在3月19日舉辦的China Hadoop Summit&#xff08;中國Hadoop技術峰會&#xff09;上&#xff0c;中國Hadoop大數據廠商紅象云騰與OpenPOWER基金會共同發布紅象云騰的新一代大數據產品,幫助企業高速處理PB規模數據。 此次發布…

個人筆記 Vue.js, Framework7, and Cordova / PhoneGap Template with Babel, Webpack and Hot Reloading...

為什么80%的碼農都做不了架構師&#xff1f;>>> 模板創建項目 模板地址 更新package.json中的dependencies依賴到最新版本 當新建一個項目的時候&#xff0c;從其他項目的package.json里面copy一份dependencies過來。 但因為是新項目&#xff0c;我們想用各個依賴包…