<p>让我们从尘埃云开始。你知道吗</p>
<p>你问的主要是关于网页是如何工作的。您需要知道如何使用HTML传递参数。有很多方法可以做到。但django有一个模式。你知道吗</p>
<p>您需要一个url和一个视图来捕获任何请求。然后您需要在其中创建一个模板和一个表单。使用此表单,您可以创建一些请求以将数据发送到视图。你知道吗</p>
<p>要创建,您需要编辑网址.py在项目中添加url:</p>
<p>你知道吗网址.py你知道吗</p>
<pre><code>from django.conf.urls import url
from my_app.views import my_view
urlpatterns = [
...
url(r'^my_url$', my_view, name='my_view')
...
]
</code></pre>
<p>有关URL的更多信息,请参阅文档的<a href="https://docs.djangoproject.com/en/1.9/topics/http/urls/" rel="nofollow">URL dispatcher</a>页。你知道吗</p>
<p>然后在你的应用程序中创建你的视图,在我的示例中是我的应用程序。编辑我的应用程序/视图.py你知道吗</p>
<p>我的应用程序/视图.py你知道吗</p>
<pre><code>from django.http import HttpResponse
def my_view(request):
return HttpResponse('IT WORKS!')
</code></pre>
<p>这样您就得到了一个可以通过路径<code>/my_url</code>访问的工作视图。如果运行<code>./manage.py runserver</code>,则可以从<code>http://localhost:8000/my_url</code>访问视图。你知道吗</p>
<p>要创建表单,需要创建模板。默认情况下,django在应用程序目录中搜索模板。在你的应用程序中创建一个模板目录,在我们的例子中是<code>my_app/templates</code>,并在里面创建一个HTML文件。例如<code>my_app/templates/my_form.html</code>。但我建议在templates目录中再创建一个目录。<code>my_app/templates/my_app/my_form.html</code>。这将防止模板冲突。您可以查看文档中的<a href="https://docs.djangoproject.com/en/1.9/topics/templates/" rel="nofollow">Templates</a>页了解更多信息。你知道吗</p>
<p>我的应用程序/模板/我的应用程序/我的_表单.html你知道吗</p>
<pre><code><html>
<body>
<form action="/my_url" method="POST">
{% csrf_token %}
<input type="text" name="number">
<input type="text" name="message">
<input type="submit" value="Run My Code">
</form>
</body>
</html>
</code></pre>
<p>这是创建窗体的方法之一。但我不推荐。我会让它更漂亮。但首先让“让它工作”,编辑你的视图.py地址:</p>
<blockquote>
<p><strong>csrf_token</strong> is a django builtin template tag, to put CSRF token into your form. By default django requires CSRF tokens at every post
request.</p>
</blockquote>
<p>我的应用程序/视图.py你知道吗</p>
<pre><code>from django.http import HttpResponse
from django.shortcuts import render
def my_view(request):
if request.method == 'GET':
return render('my_app/my_form.html')
elif request.method == 'POST':
# get post parameters or None as default value
number = request.POST.get('number', None)
message = request.POST.get('message', None)
# check if parameters are None or not
if number is None or message is None:
return HttpResponse('Number and Message should be passed')
# your code goes here
...
return HttpResponse('Your code result')
</code></pre>
<p>到目前为止,这个答案的目的是“让它发挥作用”。让我们把它转换得干净漂亮。首先,我们要创建<strong>表单。窗体类似于模型,这有助于将窗体创建为对象。它还处理表单验证。表单通常保存在表单目录中。创建<code>my_app/forms.py</code>并编辑它:</p>
<p>我的应用程序/表单.py你知道吗</p>
<pre><code>from django import forms
class MyForm(forms.Form):
number = forms.CharField(max_length=15, required=True)
message = forms.CharField(max_length=160, required=True)
</code></pre>
<p>将表格放入模板中:</p>
<p>我的应用程序/模板/我的应用程序/我的_表单.html你知道吗</p>
<pre><code><html>
<body>
<form action="{% url 'my_view' %}" method="POST">
{% csrf_token %}
{{ form }}
</form>
</body>
</html>
</code></pre>
<blockquote>
<p>Besides the form, the action of the HTML form tag is also changed.
<strong>url</strong> template tag is used to get url form url name specified in urls.py.
Instead of url tag, <code>{{ request.path }}</code> could have been used.</p>
</blockquote>
<p>创建窗体实例并将其传递给模板呈现:</p>
<p>我的应用程序/视图.py你知道吗</p>
<pre><code>from django.http import HttpResponse
from django.shortcuts import render
from .forms import MyForm
def my_view(request):
if request.method == 'GET':
form = MyForm()
return render('my_app/my_form.html', {'form': form})
elif request.method == 'POST':
form = MyForm(request.POST)
# check if for is not valid
if not form.is_valid():
# return same template with the form
# form will show errors on it.
return render('my_app/my_form.html', {'form': form})
# your code goes here
...
return HttpResponse('Your code result')
</code></pre>
<p>您可以使用基于类的vie来编写视图,但这不是必需的。希望对你有帮助。你知道吗</p>