iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
Modern Web

Django 初心者之旅系列 第 6

【Day 06】初探 Django Views

  • 分享至 

  • xImage
  •  

接續昨天建立的Django App,我們今天要讓它在網頁顯示Hello World!

前置作業

(這邊也可以先不做,但Run Server前還是要做)

在此之前先做以下前置作業 :

  1. 打開CMD並切換到虛擬環境(python venv)的資料夾路徑下

    (實際venv路徑不一定會跟我一樣喔!)

  2. 輸入以下指令啟動虛擬環境

    Scripts\activate.bat
    

    啟動虛擬環境後結果如下:

  3. 接著切換路徑到Django Project所在的資料夾下

做完前置作業後,我們需要編輯members裡面的views.pyurls.py以及myworld裡面的urls.py

Views

首先,我們先去編輯members裡面的views.py

原本的views.py長這樣 :

from django.shortcuts import render

# Create your views here.

我們需要把它修改成這樣 :

from django.shortcuts import render
from django.http import HttpResponse #import 需要的套件

# Create your views here.
def index(request):
    return HttpResponse("Hello World!") #回傳字串到前端

我們建立一個名為index的方法,用來回應訪問者的request,上述方法會回傳Hello Wprld!到訪問者端,也就是顯示在訪問者開啟的網頁上。

但只修改Views是不夠的,因為Django還不知道要用這個剛建立的view方法處理來自哪個urlrequest,所以我們需要再分別修改myworldmembersurls.py

URLs

修改membersurls.py

仔細觀察會發現members裡面並沒有urls.py這個檔案,所以我們要先自己建。

建完members/urls.py後,把它修改成跟下面一樣 :

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  • urlpatterns
    • 這個list裡面放的是members這個App下面所有網頁的路徑
  • path('', views.index, name='index')
    • '',相當於設定路經為xxx/members/xxx會是什麼與你使用的Server有關,如果用的是localhost,那基本上會是127.0.0.1:8000/members/
    • views.index,收到來自127.0.0.1:8000/members/request,以members/views.pyindex方法回應
    • name='index',設定path的別名。這邊取別名是有理由的,如果在viewstemplates需要用到這個路徑,就可以不用寫完整路徑而使用別名代稱。

但僅僅修改membersurls.py是不夠的,因為對於members來說myworld是它的root directory,我們需要修改mywrold下面的urls.py讓它可以從根目錄順利導引至members/下所有的路徑,進而得以訪問members下轄的所有網頁。

修改myworldurls.py

myworld/urls.py修改成下面這樣 :

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('members/', include('members.urls')),
    path('admin/', admin.site.urls),
]

上面要修改的部分就是多加一行path

  • path('members/', include('members.urls'))
    • myworld可以認出包括members/和其以下所有的路徑,例如: members/signin,一定要添加這行才能從根目錄瀏覽到members\下的網頁

檢視成果

  1. 先做完前置作業

  2. 接著輸入以下指令Start Server

    py manage.py runserver
    

  3. 在瀏覽器輸入對應的網址(127.0.0.1:8000/members/)就可以看到Hello World!

明天就會進入到Django Templates篇,我們開始可以用.html當作是要回傳的HttpResponse囉!


上一篇
【Day 05】建立 Django App
下一篇
【Day 07】初探 Django Templates
系列文
Django 初心者之旅31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
rtfgvb74125
iT邦新手 4 級 ‧ 2022-11-15 15:16:30

您號我照著方法做最後出縣Page NOt Found的情況,我是不是漏了甚麼東西要設定
https://ithelp.ithome.com.tw/upload/images/20221115/20111719D6JjIuhyge.png

看更多先前的回應...收起先前的回應...
Xiang1009 iT邦研究生 4 級 ‧ 2022-11-15 17:22:27 檢舉

你目前請求的 http://127.0.0.1:8000/ 這個位址因為沒有在myworld/urls.pyurlpatterns裡面所以會出現Page Not Found。要看到Hello World!的網頁需要前往 http://127.0.0.1:8000/members

Xiang1009 iT邦研究生 4 級 ‧ 2022-11-15 17:24:58 檢舉

到本篇文章為止,實際上只有 http://127.0.0.1:8000/membershttp://127.0.0.1:8000/admin 是有效的地址,其他均會是 Page Not Found。

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('members/', include('members.urls')),
    path('admin/', admin.site.urls),
]

了解謝謝您,那要如何讓127.0.0.1開啟就直接是member page不用再透過127.0.0.1/member去探訪

Xiang1009 iT邦研究生 4 級 ‧ 2022-11-16 20:58:31 檢舉

myworldurls.py改成下面這樣就可以囉!

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('', include('members.urls')),
    path('admin/', admin.site.urls),
]

好的感謝您

我要留言

立即登入留言