Django template/form 用于用户输入

Django template/form for user input

我有一个基本的 django-rest API 运行 用于我编写的程序。该程序从数据库中检索数据并将其显示在浏览器上。使用两个输入值 'a' 和 'b' 查询数据库。

例如:

a = raw_input('Enter A.')
b = raw_input('Enter B.')
response = HttpResponse()
for post in db.collection.find({'field1' : a, 'field2' : b})
    response.write(post)
return response

除了 raw_input 语句,我如何编写代码,使用户能够从浏览器输入 'a' 和 'b' 的值?

当我输入URL时,我应该有一个页面可以输入'a'和'b'。一旦我点击提交,它应该会显示帖子(由 return response 完成)。没有 'PUT' 功能,只有 'GET' 使用用户输入。

提前致谢。

如果您使用 GET 提交表单,则值应在 request.GET 中。所以像 request.GET['a']request 对象应该在您的 Django 视图中可用。

好的,所以您首先需要一个带有表单的页面;

<form action="{% url 'searchview' %}" method="GET">
  <label>A:</label>
    <input name="a">
  <label>B:</label>  
    <input name="b">

    <button type="submit">
        Search
    </button>
</form>

然后 URL 捕捉它;

url(r'^search/(?P<a>\w+)/(?P<b>\w+)/$', 'views.search_view', name="searchview")

然后一个视图来处理 URL;

def search_view(request, a, b):
    myobj = MyModel.objects.get(field1=a, field2=b)

或者基于 class 的视图类似于;

class SearchView(View):
    model = MyModel
    template_name = 'template.html'

    def get(self, request, *args, **kwargs):
        a = request.GET['a']
        b = request.GET['b']
        obj = self.model.get(field1=a, field2=b)
        return render(request, self.template_name, {'obj': obj})