Попытка перенаправить значения, заданные пользователем, с одной страницы на следующую.
Все может быть сделано в одном представлении, но когда я пытаюсь перенаправить на следующее, используя HttpResponseRedirect, Django возвращает ошибку «NameError в / search_results, имя« не определено ». Как передать значение «текст» из одного представления в другое (в мои результаты поиска)
My views.py (работает хорошо, значения, данные пользователем в одном поле, возвращают соответствующие результаты лечения из django-фильтров)
def test_views(request):
form = MeanForm(request.POST)
if form.is_valid():
text = form.cleaned_data['name']
else:
text = None
search_users = SearchWoman(request.GET, queryset=Woman.objects.all().filter(city=text))
context = { 'form': form, 'text': text, 'filter': search_users }
return render(request, 'test.html', context)
Мой test.html
<h1>TEST_1</h1>
<form method="POST" class="post-form">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Submit</button>
</form>
<h2> {{ text }} </h2>
<h1><br></br></h1>
{% for profile in filter.qs %}
<li>{{ profile.name }} </li>
{% endfor %}
Мои фильтры.py
from .models import Woman
import django_filters
class SearchWoman(django_filters.FilterSet):
class Meta:
model = Woman
fields = ['city', 'rating']
Мои Forms.py
from django import forms
from .models import Mean
class MeanForm(forms.ModelForm):
class Meta:
model = Mean
fields = ('name',)
Как я пытаюсь сделать редирект (возвращает ошибку «NameError at / search_results, nazwa» «не определено»)
def test_views(request):
form = MeanForm(request.POST)
if form.is_valid():
text = form.cleaned_data['name']
return HttpResponseRedirect('/search_results/')
else:
text = None
context = { 'form': form, 'text': text, }
return render(request, 'test.html', context)
def search_results(request):
search_users = SearchWoman(request.GET, queryset=Woman.objects.all().filter(city=text))
context = { 'search_user': search_users }
return render(request, 'search_results.html', context)
Ошибка Tempaltes (после применения второго представления)
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/search_results/
Django Version: 2.1.3
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'host_app',
'django_filters']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\app_rama\host_app\views.py" in search_results
59. search_users = SearchWoman(request.GET, queryset=Woman.objects.all().filter(city=text))
Exception Type: NameError at /search_results/
Exception Value: name 'text' is not defined
** РЕДАКТИРОВАТЬ: код ошибки: **
Environment:
Request Method: POST
Request URL: http://127.0.0.1:8000/test/
Django Version: 2.1.3
Python Version: 3.7.0
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'host_app',
'django_filters']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback:
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\base.py" in _get_response
126. response = self.process_exception_by_middleware(e, request)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\core\handlers\base.py" in _get_response
124. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\app_rama\host_app\views.py" in test_views
50. return HttpResponseRedirect(reverse('search_results', args=[text]))
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\urls\base.py" in reverse
90. return iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs))
File "C:\Users\tymot\Desktop\agencja_modeli_modelek\env\lib\site-packages\django\urls\resolvers.py" in _reverse_with_prefix
622. raise NoReverseMatch(msg)
Exception Type: NoReverseMatch at /test/
Exception Value: Reverse for 'search_results' not found. 'search_results' is not a valid view function or pattern name.
Приложение URLS
from django.conf.urls import url
from .import views
app_name = 'host_app'
urlpatterns = [
[...]
url(r'^test/$', views.test_views, name='test_views'),
url(r'^search_results/(?P<text>[\w\-]+)/$', views.search_results, name='search_results')
]
URL Rama (рядом с settings.py )
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('host_app.urls', namespace='host_app')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)