在本教程中,我們將使用 Django 創建一個天氣應用;這個應用將顯示搜索到的城市的天氣。這是一個簡單的 Django 項目,幫助初學者理解 Django 的基本概念。我們還將使用天氣 API 來獲取數據。
在繼續學習本教程之前,請確保您已經安裝了 Python 和 Django。如果沒有安裝 Django,可以使用 pip 命令進行安裝。我們建議首先創建虛擬環境,然後安裝 Django。
先決條件
- 熟悉 Python
- 熟悉 Django 的基礎知識
- 系統應該已經安裝了 Python
- 安裝 IDE (Pycharm、VSCode、Atom、high)
安裝 Django
首先,打開 IDE 的終端,創建虛擬環境。這裡,我們使用的是 visual studio。可以使用以下方式創建虛擬環境。
- 使用 pipenv shell 命令
- 使用 venv
我們使用管道 Shell命令創建虛擬命令
使用這個命令,我們不需要激活虛擬環境。它會自動激活。現在,我們將使用 pip 命令安裝 Django。
pip install django
要檢查是否安裝了 django,請鍵入 django-admin -version 並按 enter。
這意味著我們已經安裝了最新版本的 Django。
創建項目和應用
一個 Django 項目可以由許多應用組成。這裡我們使用以下命令創建一個項目。
django-admin startproject project_name
我們創建了名為天氣項目的項目,現在我們將使用python manage . py startapp my Weather app 創建該應用。
注意——注意我們已經使用了。運行「創建項目」命令時,在項目名稱後面加上(點)。它在目錄中創建單獨的項目。我們不需要跳轉到項目來訪問 manage.py 文件。
我們使用下面的命令創建新的應用名稱 MyWeatherApp 。
python manage.py startapp MyWeatherAPP
它不包含在項目中,因此,為了考慮應用,我們必須在 INSTALLED_APP 中添加應用名稱。所以打開 settings.py 文件,添加新創建的 app。
在這一點上,我們向前邁出了一步來創建我們的應用。使用以下命令運行伺服器。
python manage.py runserver
點擊給定的鏈接,它將顯示 Django 應用環境。
登錄到管理面板
接下來,我們將登錄內置的 Django 儀錶板。為此,我們需要遷移我們的資料庫,這意味著 Django 將創建默認應用所需的預定義表。
在終端中鍵入以下命令,然後按回車鍵。
python manage.py migrate
這將為我們的項目創建 SQLite 資料庫。這是 django 提供的默認資料庫,它向資料庫中添加了幾個表。
在管理面板中會有一個用戶表,它會將用戶存儲在我們的應用中。
要登錄到管理面板,我們需要使用下面的命令創建管理。
python manage.py createsuperuser
運行該命令後,它將詢問用戶信息,如用戶名、電子郵件地址和密碼。完成後,再次啟動伺服器。
python manage.py runserver
打開給定的鏈接並訪問 http://127.0.0.1:8000/admin 頁面,因為 admin 是在 urls.py 中設置的。
添加模板和視圖
現在,我們將添加模板來製作我們的應用的布局。模板是一個 HTML 文件,允許我們添加 Jinja 語法來使模板動態化。為天氣項目目錄創建一個名為模板的新文件夾。
<!DOCTYPE html>
<html lang="en">
{% load static %}
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.5.3/cerulean/bootstrap.min.css"
integrity="sha512-dQLT/B7byn2LjN/DN4zeBKpwGV6qbidV0XiMRWQOL7TGrV7FkZFldkGG+DGMU+CQnMTcRZlUI7GMWt1j6akNew=="
crossorigin="anonymous" />
<title>Weather App </title>
</head>
<body>
<br /><br /> <br>
<div id="jumbotron" class="jumbotron" style="text-align: center; margin-top:-50px">
<h1 class="display-4">Weather Desktop App </h1>
<h5>Using Python Language and Django Framework</h5>
</div>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
<form method="post" class="col-md"">
{% csrf_token %}
<div class=" input-group">
<input type="text" class="form-control" name="city" placeholder="Choose Your City">
<div class="input-group-btn">
<button type="submit" class="btn btn-primary">Search</button>
</div>
</div>
<form>
</nav>
<br> <br>
<div class="row">
{% if country_code and coordinate and temp and pressure and humidity %}
<div class="col d-flex justify-content-center" ">
<div class=" card text-white bg-light mb-6">
<div class=" card-body">
<h4><span class="badge badge-primary">City :</span> </h4>
<h4><span class="badge badge-primary">Country Code :</span> </h4>
<h4><span class="badge badge-primary">Coordinates [X,Y] :</span> </h4>
<h4><span class="badge badge-primary">Temperature :</span> {{temp}}</h4>
<h4><span class="badge badge-primary">Pressure :</span> </h4>
<h4><span class="badge badge-primary">Humidity : </span> </h4>
</div>
{% endif %}
</div>
</body>
</html>
我們創建了index.html文件。我們將從天氣 API 獲取數據,並將其渲染到模板中,但現在我們將創建視圖並映射到網址。在視圖中添加下面的函數。
View.py
from django.shortcuts import render
# Create your views here.
def home(request):
return render(request, 'index.html')
・T0️ urls.py ・T1️
from django.urls import path
from .views import home
urlpatterns = [
path('', home, name = 'home')
]
Django 將匹配沒有端點的 URL,並將其路由到我們創建的視圖函數。
使用天氣 API
要獲取實時天氣報告,我們需要註冊開放天氣地圖 API 。它將返回我們在應用中輸入的任何城市的實時天氣。
訪問網站並創建一個帳戶,然後轉到他們的儀錶板上的 API 鍵。
注意-API 密鑰應該是秘密的,以防止它們被其他方使用。
添加城市、city_weather,並導入requests
模塊。
視圖. py
import json
from django.shortcuts import render
import urllib.request
import json
# Create your views here.
def home(request):
if request.method == 'POST':
# Get the city name from the user api = http://api.openweathermap.org/data/2.5/weather
city = request.POST.get('city', 'True')
# retreive the information using api
source = urllib.request.urlopen('http://api.openweathermap.org/data/2.5/weather?q=' + city + '&units=imperial&appid=164fec96a27b97680ee442e489ce3f06').read()
# convert json data file into python dictionary
list_of_data = json.loads(source)
# create dictionary and convert value in string
context = {
'city': city,
"country_code": str(list_of_data['sys']['country']),
"coordinate": str(list_of_data['coord']['lon']) + ' '
+ str(list_of_data['coord']['lat']),
"temp": str(list_of_data['main']['temp']) + 'k',
"pressure": str(list_of_data['main']['pressure']),
"humidity": str(list_of_data['main']['humidity']),
}
else:
context = {}
# send dictionary to the index.html
return render(request, 'index.html', context)
解釋-
在上面的視圖中,我們檢查方法是否是 POST,然後從表單中獲取城市名稱。然後我們使用 urllib.request.urlopen()讀取特定城市的數據。我們將源變數傳遞給 json.loads() ,後者將數據轉換成 Python 字典。
使用這個,我們可以輕鬆地訪問所需的數據並保存到上下文字典中。當用戶進入城市時,它將顯示我們存儲在上下文字典中的所有屬性。
注意-該 API 將需要一些時間來激活。如果沒有激活,請在幾分鐘後嘗試。
現在我們將對 html 文件進行修改。
<div class="row">
{% if country_code and coordinate and temp and pressure and humidity %}
<div class="col d-flex justify-content-center" ">
<div class=" card text-white bg-light mb-6">
<div class=" card-body">
<h4><span class="badge badge-primary">City :</span> {{city}}</h4>
<h4><span class="badge badge-primary">Country Code :</span> {{country_code}}</h4>
<h4><span class="badge badge-primary">Coordinates [X,Y] :</span> {{coordinate}}</h4>
<h4><span class="badge badge-primary">Temperature :</span> {{temp}}</h4>
<h4><span class="badge badge-primary">Pressure :</span> {{pressure}} </h4>
<h4><span class="badge badge-primary">Humidity : </span> {{humidity}}</h4>
</div>
{% endif %}
</div>
現在我們運行伺服器並點擊給定的鏈接。如下圖所示。
在搜索框中輸入城市名稱,點擊搜索按鈕,獲取天氣數據。我們進入 Noida 獲取天氣數據。
正如我們在上面的快照中看到的,我們已經成功地使用 Django 框架創建了一個天氣應用。到目前為止,我們已經了解了一些命令,創建虛擬環境,最重要的是了解了 API。我們還討論了調用 API 和獲取不同天氣欄位的國家代碼、濕度、溫度等。
你可以讓它成為這個項目更有吸引力的 UI。我們已經使用了引導類和 HTML。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/235720.html