HTML表单到Django

-3 投票
2 回答
1575 浏览
提问于 2025-04-17 07:59

可能重复的问题:
python/django 加法器

我刚开始学习django,想做一个网站,可以输入我的数字(通过html的输入框),然后把这个数字加到另一个数字上或者减去它。

所以我在views.py文件里尝试了这个:

def calc(request):
    try:     
        i1 = int(request.GET['i1'])
        i2 = int(request.GET['i2'])
    except MultiValueDictKeyError:
        raise Http404()
    u = i2 + i1
    return ("answer.html", u)

我还把这个展示给其他人看,他们告诉我需要在html里建立一个“链接/关系”,我该怎么做这个链接,而不使用数据库呢?

补充:非常抱歉,大家,我是从《The Djangobook》开始学习django的,但他们没有像你们或者文档那样解释得清楚,我真心感到抱歉。

2 个回答

1

你可以先看看Django的教程,它清楚明了地解释了如何做你想要的事情,比这里能提供的详细得多。链接是 https://docs.djangoproject.com/en/dev/intro/tutorial01/

3

好的,我来简单回答一下这个问题,这个问题昨天也有人问过。我不是想无礼,但在你提问之前,真的需要做一些研究,看看一些教程之类的,这样才能问出更有意义的问题。我把表单的保存逻辑放在视图里,这样你就能明白发生了什么。

#forms.py
from django import forms

class AdditionForm(forms.Form):
    first_number = forms.IntegerField()
    second_number = forms.IntegerField()


#views.py
from django.shortcuts import render

from [your_app].forms imort AdditionForm

def calc(request):
    form = AdditionForm(request.POST or None)
    answer = None
    if request.method == 'POST':
        if form.is_valid():
            first_number = form.cleaned_data.get('first_number', 0)
            second_number = form.cleaned_data.get('second_number', 0)
            answer = first_number + second_number
    return render(request, 'some-file.html', {'form' : form, 'answer' : answer})


#some-file.html
<html>
    <head>
        <title>Simple Calculator</title>
    </head>
    <body>
        <form action="." method="post" enctype="application/x-www-form-urlencoded">
            <fieldset>
                <ol>
                    {{ form.as_ul }}
                    <li><input type="submit" value="Add the Numbers" />
                </ol>
            </fieldset>
        </form>
        {% if answer %}
        <p>Your answer was: {{ answer }}</p>
        {% endif %}
    </body>
</html>

撰写回答