Как отобразить Django входные данные на второй странице - PullRequest
0 голосов
/ 01 марта 2020

У меня простой Django вид, который отображает текст, который пользователь вводит при вводе. Теперь этот текст отображается на этой же странице без изменения адреса (scraping. html), но я хотел бы отобразить его на новой странице (scrapingscore. html). Как я могу это сделать? Я прочитал о HttpResponseRedirect и попытался сделать это, но это не сработало, и я в замешательстве.

views.py

class HomeView(TemplateView):
    template_name = 'scraping.html'

    def get(self, request):
        form = HomeForm()
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = HomeForm(request.POST)
        if form.is_valid():
                text = form.cleaned_data.get('post')
                form = HomeForm()

        args = {'form': form, 'text': text}
        return render(request, self.template_name, args)

forms.py

class HomeForm(forms.Form):
    search = forms.CharField(label='search', max_length=100)

Соскоб. html

{% block content %}
    <form method="post">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Upload text</button>
    </form>
    {{ text }}
{% endblock %}

edit:

теперь мой код выглядит так:

urls.py

path('scraping', views.HomeView.as_view(), name='scraping'),
path('scrapingscore', views.HomeView.as_view(), name='scrapingscore'),

views.py

class HomeView(TemplateView):
    template_name = 'scraping.html'

    def get(self, request):
        form = HomeForm()
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = HomeForm(request.POST)
        if form.is_valid():
                text = form.cleaned_data.get('post')
                form = HomeForm()
        c = {text: 'bar'}
        return render(request, 'scrapingscore.html', context = c)

и я добавил '{{text}}' к скрепингскору. html

1 Ответ

0 голосов
/ 01 марта 2020

Если вы хотите отобразить эти данные на новой странице, выполните следующие действия.

  1. В URLS.conf определите URL-адрес, который будет перенаправлен на данный метод в views.py

  2. В этом методе вам необходимо создать контекст, который будет содержать данные, которые вы хотите отобразить на новой странице.

  3. Наконец, просто вызовите метод render, чтобы отобразить нужную страницу HTML с данными, которые вы хотите передать в качестве контекста (см. здесь ).

Представления .py метод должен выглядеть следующим образом

from django.shortcuts import render

def my_view(request):
    # View code here...
    #set your data here
    c = {key_data: 'bar'}
    return render(request, 'myapp/index.html', context = c)

Теперь на вашем scrapingscore.html, отрендерируйте данные как

{{key_data}}

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