05 Python Django 教學10 所有文章

【Django教學】 如何在網頁上運行 python 腳本

python_django
為了解決如何在網頁上運行 python 腳本這問題,當時花費不少時間研究和踩過了不少坑,因此將步驟詳細記錄下來,希望能幫助到想利用網頁寫一個簡單的 python 程式的人。
如果有第一次接觸 Django 的朋友可以參考之前寫的這篇:[Django教學] 5分鐘快速入門,打造一個簡單Python網頁

 

一. 安裝 Django

Mac 版安裝 Django:
pip install django  #在終端機內輸入
Window 版安裝 Django:
安裝好後創建第一個 Project:
django-admin startproject first  #在終端機內輸入
創建第一個 APP:
cd first  #在終端機內輸入
django-admin startapp home  #在終端機內輸入
first > settings.py 裡面 INSTALLED_APPS 加入 home
# Application definition
INSTALLED_APPS = [
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
   'home',
]
首先看一下最終的目錄會是如下:
 
|– first
|   |– __init__.py
|   |– settings.py
|   |– urls.py
|   `– wsgi.py
| — home
|   |– __init__.py
|   |– views.py
|   |– urls.py
|   |– test.py
|   |– apps.py
|   |– models.py
|   `– admin.py
| — templates
|   `–simple_crawl.html
`– manage.py

二. 將 Python 腳本放到 home > Views.py內

 
 
這邊寫了一個簡單的爬蟲,僅抓取網頁的標題並存在 title 內,最後 return render(request, ‘home/simple_crawl.html’,locals()) 這邊是告訴 Django render 這個 simple_crawl.html 頁面
fromdjango.shortcutsimportrender,HttpResponse
frombs4importBeautifulSoup
importrequests

def simple_crawl(request):
     url = "https://www.maxlist.xyz/"
     res = requests.get(url)
     soup = BeautifulSoup(res.text,"html.parser")
     title = soup.select('title')
     return render(request,'home/simple_crawl.html',locals())

三. 建立 simple_crawl.html 頁面

路徑:home > templates > simple_crawl.html
1.在 home 資料夾內新建 templates 資料夾
2.在 templates 資料夾內新建 simple_crawl.html
 
我們會將爬取到的內容在 simple_crawl.html 這個頁面上顯示,可以看到我們這邊用{{ title }} ,這是 Django 特定寫法
<!DOCTYPEhtml>
<htmllang="en">
  <head>
    <metacharset="UTF-8">
  </head>
  <body>
    <h1>爬取的網頁是{{title}}</h1>
  </body>
</html>
然後在 first > setting.py 內TEMPLATES 裡面 ‘DIRS’ :[ ] 改成 ‘DIRS’ : [os.path.join(BASE_DIR, ‘templates’).replace(‘\\’, ‘/’)],
這邊是要告訴 Django,我們有設置 templates 資料夾,要 Django 從這路徑去找templates
TEMPLATES = [
    {
       'BACKEND':'django.template.backends.django.DjangoTemplates',
       'DIRS': [os.path.join(BASE_DIR,'templates').replace('\\','/')],
       'APP_DIRS':True,
       'OPTIONS': {
           'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
   },
]

四. urls設定

在 first > urls.py 將設定修改如下,這邊新增了path(‘home/’, include(‘home.urls’)),告訴 Django 當有人踩 ‘home/’ 這個網址時,要去 include(‘home.urls’) 這裡找檔案,所以接下來就是建置 ‘home.urls’
fromdjango.contribimportadmin
fromdjango.urlsimportpath,include

urlpatterns = [
    path('admin/',admin.site.urls),
    path('home/',include('home.urls')),
]
在 home 資料夾內新建 urls.py,所以當 Django 找到 ’home.urls’ 時,他會讀取到 path(”, views.simple_crawl),這邊的意思是叫 Django 去 view 裡面找simple_crawl,也就是我們最一開始將 Python 腳本寫進的 def simple_crawl(request) 內,接下就來會開始運行 Python 爬蟲腳本,並將資料顯示標題於網頁上囉!
fromdjango.urlsimportpath
from.importviews

urlpatterns = [
    path('',views.simple_crawl),
]
最後運行指令:
python manage.py runserver
基本上這就是一個簡單的在網頁上運行 Python 腳本的網頁,希望對大家有幫助!

Django 教學相關的延伸閱讀:

Python 教學相關的延伸閱讀:

那 [Django教學] 如何在 Django 網頁上運行 python 腳本 的介紹就到這邊告一個段落囉!有任何問題可以在以下留言~

有關 Max行銷誌的最新文章,都會發佈在 Max 的 Facebook 粉絲專頁,如果想看最新更新,還請您按讚或是追蹤唷!

在〈【Django教學】 如何在網頁上運行 python 腳本〉中有 2 則留言

  1. 版主您好 謝謝分享此文  
    我檢查了幾次 也重新照流程跑了幾次 
    但是runserver之後 一直給的回報是404 (Request Method: GET)

    Using the URLconf defined in first.urls, Django tried these URL patterns, in this order:
    admin/
    home/
    The empty path didn’t match any of these.

    若再check分頁 /home 則得到
    Exception Type: TemplateDoesNotExist
    Exception Value:
    home/simple_crawl.html

    不知版主是否能給予指導究竟該去哪裡檢查code

    感激 

    1. HI 你好,感謝參考本篇 Django 教學

      我看到你的錯誤訊息(Exception Value: home/simple_crawl.html),照理來說 simple_crawl.html 是要被放在 templates 資料夾內唷
      請確認一下你 Django 新增的檔案架構是否如下:

      |– first
      | |– __init__.py
      | |– settings.py
      | |– urls.py
      | `– wsgi.py
      | — home
      | |– __init__.py
      | |– views.py
      | |– urls.py
      | |– test.py
      | |– apps.py
      | |– models.py
      | `– admin.py
      | — templates
      | `–simple_crawl.html
      `– manage.py

      如果還是沒辦法解決,歡迎提供 GitHub 檔案連結,我幫你看一下

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *