首页 > 解决方案 > 如何在Django 2中将变量从html注入views.py?

问题描述

我尝试了一些方法,但都没有奏效。该按钮应从文本框中输入的城市刮取天气。当我对城市名称进行硬编码但我不知道如何将该城市名称从 HTML 表单获取到views.py.

html

<form method="POST "action="{% url 'weather' %}">
{% csrf_token %}
    <input  type="text" value="{{ city }}">
    <button type="submit" class="btn btn-info">Get my weather</button>
</form>

视图.py

def scrape_weather(request):
    old_weather = Weather.objects.all()
    old_weather.delete()
    api_adress = "http://api.openweathermap.org/data/2.5/weather?q="
    api_key = "&appid=3a99cf24b53d85f4afad6cafe99d3a34"
    city = input()
    #city = "warsaw"
    url = api_adress + city + api_key

    json_data = requests.get(url).json()
    new_weather = json_data['weather'][0]['main']
    degree_kelvin = int(json_data['main']['temp'])
    degree = degree_kelvin-273
    pressure = json_data['main']['pressure']

    new_weather = Weather()
    new_weather.degree = degree
    new_weather.pressure = pressure

    new_weather.weather = new_weather
    new_weather.save()
    if request.method == 'POST':
        form = CityForm(request.POST)
        if form.is_valid():
            pass
    else:
        form = CityForm() 
    return render(request, "news/home.html", {'form': form})

forms.py

from django import forms

class CityForm(forms.Form):
    city = forms.CharField(max_length=30)

    if not city:
        raise forms.ValidationError('You have to write something!')

标签: pythonhtmldjangodjango-formsdjango-views

解决方案


在您的模板中,您可以:

<form method="POST "action="{% url 'weather' %}">
{% csrf_token %}
    {{ form }}
    <button type="submit" class="btn btn-info">Get my weather</button>
</form>

这将为您管理小部件(在这种情况下为文本输入)属性的所有业务name

阅读本文了解更多详情。


推荐阅读