Визуализация вида из формы в Джанго - PullRequest
0 голосов
/ 05 мая 2018

У меня проблема с получением содержимого из формы и отображением его на другой странице.

Когда я нажимаю на кнопку отправить, он направляет меня на правильную страницу, но не загружается, поскольку в моей функции есть ошибки Я также не уверен, как отобразить контент на странице.

Моя форма:

<div class = "container">
<form action="{% url 'cleaner:result' %}" method ="post" >
  {% csrf_token %}
  <div>
    <label for="cv">Enter details: </label>
    <textarea name="cv" id='cv' rows="10" cols="30" maxlength="20000"></textarea>
  </div>
  <div>
  <button>Submit</button>
  </div>
</form>
</div>

urls.py

url(r'clean/result/$', views.ResultView.as_view(), name='result'),

Моя проблема лежит здесь, в views.py

class ResultView(View):

    template_name = 'cleaner/result.html'
    #Get details from form
    details = request.form.get("cv")
    def result(request):
        if details != '':

        return render(request, template_name)

Это неправильный способ получения содержимого из формы. Как я могу получить это?

details = request.form.get("cv")

NameError: name 'request' is not defined

После этого как отобразить содержимое формы?

Я использую django 1.9 и python 3.6.4.

редактирование:

Вот рабочий код, если кто-нибудь сталкивался с этим:

class ResultView(View):

    template_name = 'cleaner/result.html'

    def post(self, request):
        #Get details from form
        details = request.POST.get("cv")

        if details != '':

            return render(request, self.template_name)

1 Ответ

0 голосов
/ 05 мая 2018

Есть несколько вещей не так. Во-первых, все, что связано с запросом, должно быть сделано в методе, а не на уровне класса; классы определяются во время импорта, и в этот момент нет запроса.

Во-вторых, нет смысла определять метод с именем request. В представлении на основе классов основные методы названы в честь методов HTTP - get и post - поэтому вам необходимо переопределить соответствующий метод, то есть post.

В-третьих, в Джанго нет request.form; ты думаешь о колбе. В Django вам нужно будет использовать request.POST.

И, наконец, для отображения содержимого формы вам нужно передать его в качестве контекста в функцию рендеринга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...