Django:使用文本框数据并将该文本写入文件

时间:2018-01-01 18:43:56

标签: python django django-forms

我是Django和Web开发的新手。现在我的目标是创建一个像谷歌一样的界面,从搜索框中取出文本并将其写入文件(换句话说,只是想在搜索框中访问文本数据)。我创建了一个如下所示的搜索页面

search.html

{% extends "header.html" %}
{% block content %}
    <div style="display: flex; justify-content: center;">
        <img src="/static/images/logo.jpg" class="responsive-img" style='max-height:300px;' alt="face" >
    </div>

<form  method="get" action="">
    {% csrf_token  %}
    <div style="display: flex; justify-content: center;">
        <input type="text" name="query" placeholder="Search here..." required size="70" >
        <button type="submit">Go!</button>
    </div>
    <button type="submit">Search</button>
</form>
{% endblock %}

views.py

from django.shortcuts import render

def index(request):
    return render(request, 'search.html')

urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^$', views.index, name='index')
]

请给我一个如何从这里前进的提示/示例?感谢。

2 个答案:

答案 0 :(得分:1)

您的搜索字段如下所示:

<input type="text" name="query">

输入的名称为query。由于它是一个GET表单,当你提交它时,你一定注意到了,网址看起来像这样:

/?query=<value of the input>

?之后的部分称为查询字符串。对于每个请求,Django都维护着一个查询字符串的字典。 request对象有一个名为GET的字典用于GET请求。如果你发出POST请求,Django会将表单数据保存在名为POST的dict中。

要在Django中访问请求查询字符串的值,您可以这样做:

query = request.GET.get('query')

如果是POST请求,您可以这样做,但这次使用POST词典:

some_value = request.POST.get('some_key')

有关此问题的完整文档可在 - Request and response objects找到。

答案 1 :(得分:1)

这应该这样做

<强> views.py

def index(request):
    query = request.GET.get('query')
    # do a check here to make sure search_term exists before attempting write
    with open('/path/to/file', 'rw') as f:
        f.write(query)

    return render(request, 'search.html')