第一篇介紹了安裝Django,那么,今天的主題內容是使用VS編寫第一個Django應用。
1)新建Django Web項目
選擇新建Django Web項目,在彈出來的窗口中,修改名稱,修改路徑,創建即可。創建成功之后,VS會自動打開一個readme.html的文件,文件內容是指引你創建超級用戶用來管理你的Django應用。從圖中我們也可以看出來,與Python相關的操作,都在一個獨立的菜單中,以后肯定會經常用到的。
2)看看VS為我們創建了什么
項目創建完成之后,我們可以看到VS為我們創建了如下圖所以的目錄文件結構,一個app文件夾,一個DjangoLazyOrders文件夾,以及db.sqlite3,manager.py等文件,具體每個文件是用來干嘛的我就不細說了,官方文檔有詳細的說明,我只談一下我自己的理解。
app:類似於Asp.Net MVC項目中的Area,可以這么來理解,實際就是用來區分功能模塊的。
db.sqlite3:說明Django默認是使用sqlite數據庫
urls.py:類似於Asp.Net MVC中的RoutConfig.cs,用來配置路由用的
requirements.txt:Django對版本的配置要求,打開這個文件,VS會提示創建虛擬環境,直接選擇創建即可,創建虛擬環境的目的是為了給當前這個項目一個獨立的運行環境,不受其他環境的影響,因為你的電腦上可能不止一個Python項目
因為VS已經集成了Django的開發環境,所以一些配置的工作,IDE已經給我們配置好了,我們可以直接運行,項目可以正常打開網頁,沒有任何的問題。我們跟蹤代碼,分別來看看app文件夾下邊的這些文件是用來干嘛的:
migrations:這個與Orm相關,用來遷移數據庫用的
static:里邊保存的是一些靜態文件,比如:js,css,fonts文件等,VS內置了bootstrap前端框架的腳本文件
templates:里邊存放的是一些html文件,但是不是靜態的html文件,里邊的數據綁定是有語法規則的,類似於Asp.Net MVC中的cshtml文件中使用的razor語法,python解釋器會按照語法規則來綁定渲染模板文件,然后返回數據給瀏覽器。
forms.py:與表單相關的內容,以及表單數據校驗等
models.py:orm中的entity,與Asp.Net MVC中model的區別是,Asp.Net MVC中的model實質是viewmodel,並不是entity,而這里直接就是entity
tests.py:用來寫測試代碼用的
views.py:類似於Asp.Net MVC中的controller,里邊的函數,就是action方法
3)新建hello app
在項目文件上右鍵,添加,Django應用,命名為hello,確定,VS會自動創建上述所有的文件,省去了一個一個創建文件的麻煩,這也是IDE強大的地方之一。我們要實現一個在瀏覽器中輸入http://localhost:8090/hello得到我們寫的hello world!界面,我們要怎么做?
服務啟動的端口號可以在項目屬性調試中修改
第一步:在setting.py文件中注冊(引用)我們新增加hello,批注:此時還不是必須,因為我們還沒有用到models
# Application references # https://docs.djangoproject.com/en/2.1/ref/settings/#std:setting-INSTALLED_APPS INSTALLED_APPS = [ 'hello', 'app', # Add your apps here to enable them 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
第二步,修改hello app中的view.py文件,添加如下內容:
from django.http import HttpResponse # Create your views here. def hello(request): return HttpResponse("hello world!"); def test(request): return HttpResponse("test")
第三步,在hello app中新增加文件urls.py,文件內容為:
from django.urls import path from hello import views urlpatterns = [path('hello/',views.hello,name='hello'), path('test/',views.test,name='test')]
第四步,修改DjangoLazyOrders文件夾下的urls.py的內容如下:
""" Definition of urls for DjangoLazyOrders. """ from datetime import datetime from django.urls import path,include from django.contrib import admin from django.contrib.auth.views import LoginView, LogoutView from app import forms, views urlpatterns = [path('', views.home, name='home'), path('contact/', views.contact, name='contact'), path('about/', views.about, name='about'), path('login/', LoginView.as_view(template_name='app/login.html', authentication_form=forms.BootstrapAuthenticationForm, extra_context= { 'title': 'Log in', 'year' : datetime.now().year, }), name='login'), path('logout/', LogoutView.as_view(next_page='/'), name='logout'), path('admin/', admin.site.urls), path('', include('hello.urls')),]
第五步,訪問,啟動調試,在地址后面追加hello回車,得到了我們要展示的內容hello world!
4)總結
- 該篇主要介紹了,Django項目的目錄結構,介紹每個文件是干嘛用的
- 完成經典入門app的hello world