-3

我是 Python 和 Django 的新手,我正在尝试使用 django 创建一个用户界面来计算速度(速度 = 距离/时间)。我已经使用 django 创建了一个项目,其中我创建了一个名为 speed 的 weapp。以下是我的文件

网页应用

  • 速度

    -模板

    -views.py

    -forms.py

    -urls.py

  • 网络应用

    -settings.py

    -urls.py

    -init.py

    -wsgi.py

我的代码:forms.py

from django import forms

class Calculatespeed(forms.Form):
    distance=forms.CharField(
        required=True,max_length=10,
        widget=forms.TextInput(attrs={"placeholder":"0.0",
                                      "style":"width:100px"}))
    time=forms.CharField(
        required=True,max_length=10,
        widget=forms.TextInput(attrs={"placeholder":"0.0",
                                      "style":"width:100px"}))

视图.py

# Create your views here.
from django.shortcuts import render
from django import template
from speed.forms import Calculatespeed

def speed(Speed):
    distance=float(raw_input("Please Give the disance"))
    Time=float(raw_input("Please Give the Time"))
    Speed=distance/Time
    return Speed

def Main(request):
    if request.GET:
        form = speed_form.SpeedForm(request.GET)
        if form.is_valid():
            Distance = form.cleaned_data["distance"]
            Time = form.cleaned_data["time"]

    return shortcuts.render_response(
        "speed.html",
        page_context,
        context_instance=template.RequestContext(request)
    )

模板:

<html>
<head>
<title>WebApp1</title>
</head>
<h1>Speed Calculator</h1>
<form action="/contact/" method="post">
<br>
Distance:
<input type="interger" distance="Distance" />
<br>
Time:
<input type="interger" Time="Time" />
 <input type="submit" value="Submit" />

网址.py

from django.conf.urls import *
from speed.views import speed

urlpatterns = patterns('',
    url(r'^$', speed),
)

问题是当我尝试运行服务器时出现错误,我无法获得速度的用户界面,任何人都可以帮助我解决这个问题。

模板文件和我提供的所有其他文件是否正确?

提前致谢

4

2 回答 2

0

您在视图中使用 raw_input 来询问所需的数据。我认为您不了解 Web 应用程序是什么 :-) (或者该speed功能仅用于测试,因此在这种情况下,它将被放置在tests.py应用程序中)

在您看来main(request),您应该初始化一个表单,如果发送了请求 POST(可以检查request.method),请检查该表单是否有效。

这里有一些可能有效的代码(我将render_to_responseby替换render为不会将您与您滥用的上下文混淆)

from django.shortcuts import render


def speed(distance, time_):  # don't like to name a var time because of the module with the same name...     
    return distance/ time_


def compute_speed(request):
    if request.method == 'POST':
        form = Calculatespeed(request.POST)
        if form.is_valid():
             distance = form.cleaned_data["distance"]
             time_ = form.cleaned_data["time"]
             speed = speed(distance, time_)
             # Do your stuff here
    else:
        form = Calculatespeed()


    return render(request, "speed.html", {'form': form})

并且在urls.py

 urlpatterns = patterns('',
                        url(r'^$', compute_speed, name="compute_speed"),
                       )

您的 HTML 中还有一些拼写错误:

  1. 整数输入类型不存在
  2. 为什么 action="/contact/" 而不是{% url 'compute_speed' %}
  3. 您的表单未关闭
于 2013-08-13T07:20:25.120 回答
0

你的代码有很多问题,所以在我看来,这似乎是对使用 django 的一个非常基本的误解,也许一般来说是使用 python。你的代码中有很多pythonic错误(你有错误的缩进,你做了一个没有函数的'return',等等),还有很多django-ic错误(你不能在django中使用raw_input它那样不行,您创建了一个表单,然后自己编写了整个 html)。

我建议在你用 django 写之前,把它写成一个 python 程序,看看它是否有效。当你觉得你已经足够理解这门语言并且想要为你的程序做 web 应用程序时,请查看 django 文档并花一些时间来了解它是如何工作的。

于 2013-08-13T07:21:27.657 回答