1. 程式人生 > >Anaconda+django寫出第一個web app(一)

Anaconda+django寫出第一個web app(一)

圖片 things tab tro ogr 參考 min sent clas

在安裝好Anaconda和django之後,我們就可以開始創建自己的第一個Web app,那麽首先創建一個空文件夾,之後創建的文件都在這個文件夾內。

啟動命令行進入此文件夾內,可以先通過如下命令查看一下自己的python版本和django版本。

python --version django-admin --version

我的python和django版本分別是3.7.0和2.1.5

使用如下命令創建第一個項目,命名為mysite。

django-admin startproject mysite

命令執行後,會在當前文件夾下生成一個名字為mysite文件夾,文件目錄如下:

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

然後命令行進入mysite文件夾下,輸入 python manage.py runserver ,即可啟動django development server,在瀏覽器中輸入http://127.0.0.1:8000/可看到如下界面,表示第一步成功了,該界面是django的默認界面,之後我們可以對此頁面內容進行自定義。

技術分享圖片

此時可以按CTRL+C退出runserver,也可以重新打開一個命令窗口,然後輸入如下命令創建第一個App,這裏我將app命名為main。

python manage.py startapp main

命令執行後生成了一個新的文件夾main,此時主要文件結構如下,至此文件基本框架已經建成:

mysite/
    manage.py
    mysite/
    main/

那麽django是如何呈現數據的呢,下面這段話很清楚的解釋了django的工作原理,這段話來自一位YouTube的博主sentdex[1],他在YouTube上還有很多其他的python教程,感興趣的可以看看,我的django入門也主要來自於他的教程,第一次讀這段話剛開始可能並不理解,但跟著教程做一遍之後再回過頭來看就能明白了:

Django uses what‘s called a Model View Controller paradigm. Every page you visit on a Django application is likely using these three things to serve you data.

  • Model: Your database abstraction, which will contain objects that are mapped to your database. For example, we‘ll have a "Tutorial" model/object, a "User model/object," a "Tutorial Series" model/object...etc. All you need to do is define these models and Django handles the rest for you. You can even change your models down the line and, through migrations, Django can help you get it done within seconds, rather than the likely hour...or more... it would take you to do this yourself.
  • View: How you will represent the data. This is where you will actually render things to a user.
  • Controller: How you map URLs to views.

While we call it an MVC (model, view, controller), you can imagine it moreso working in reverse. A user will visit a URL, your controller (urls.py) will point to a specific view (views.py). That view can then (it doesn‘t actually HAVE to) interface with your models.

django的優勢在於可擴展性好,當我們在後期想要對網站添加某些功能時非常方便,django可以保證這些文件仍然組織的很好。

接下來 我們修改主頁內容,使其顯示“Hello,World!”

第一步:進入mysite文件夾,打開urls.py,django把網站看作是一堆app的集合,django通過指向某個app下的ursl.py來指向該app,因此要把該app下的urls包含進來,mysite/ursl.py修改後如下,使用include別忘記從django.urls導入include,也不要忘記path命令行後的逗號:

1 from django.contrib import admin
2 from django.urls import path, include
3 
4 urlpatterns = [
5     path(‘‘, include(main.urls)),
6     path(admin/, admin.site.urls),
7 ]

第二步:進入main文件夾,此文件夾下並沒有urls.py,我們需要自己新建一個,寫入如下內容:

1 from django.urls import path
2 from . import views
3 
4 app_name = main #此處為了urls的命名空間
5 
6 urlpatterns = [
7     path(‘‘, views.homepage, name=homepage),
8 ]

第三步:修改main文件夾下的views.py,該文件用來返回一些html頁面,此時我們要在首頁顯示“Hello,World!”,為了簡單我們直接使用HttpResponse,首先導入HttpResponse,然後定義一個函數用來顯示內容:

1 from django.shortcuts import render
2 from django.http import HttpResponse
3 # Create your views here.
4 def homepage(request):
5     return HttpResponse("Hello, World!")

最後,我們再次runserver,進入http://127.0.0.1:8000/,可以看到如下界面:

技術分享圖片

在這個教程裏,我產生了一個疑問:到哪裏查找命令的用法呢?比如HttpResponse的用法是什麽?這些可以在django的幫助文檔中找到[2]。

參考鏈接:

[1] https://pythonprogramming.net/django-web-development-python-tutorial/

[2] https://docs.djangoproject.com/en/2.1/ref/request-response/

Anaconda+django寫出第一個web app(一)