有一个Web应用程序可从不同站点收集数据。主页上的表单以两个字段的形式显示,您可以在其中几种语言和城市中进行选择。当您按下搜索按钮时,仅显示一对语言和城市的结果,而与表单中选择的变体无关,因为action ='''表单中只有一个URL。如何动态更改表单action ='',具体取决于主页上表单的变体选择。我希望我已经清楚地解释了。谢谢您的帮助!
models.py
from django.db import models
class Page(models.Model):
language = models.CharField(max_length=100)
city = models.CharField(max_length=100)
def __str__(self):
return self.language
views.py
from django.shortcuts import render, redirect
from .forms import PageForm
from page.parsers.kiev_python_parser import *
from page.parsers.kiev_javascript_parser import *
from page.parsers.kiev_java_parser import *
from page.parsers.kiev_c_parser import *
def index_page(request):
form = PageForm()
return render(request, 'page/index_page_form.html', context=
{'form':form})
def kiev_python(request):
kiev_python_main()
return render(request, 'page/kiev_python_result.html', context=
{'workua_data': workua_data, 'rabotaua_data':rabotaua_data})
def kiev_javascript(request):
kiev_javascript_main()
return render(request, 'page/kiev_javascript_result.html',
context={'workua_data': workua_data, 'rabotaua_data':rabotaua_data})
def kiev_java(request):
kiev_java_main()
return render(request, 'page/kiev_java_result.html', context=
{'workua_data': workua_data, 'rabotaua_data':rabotaua_data})
def kiev_c(request):
kiev_c_main()
return render(request, 'page/kiev_c_result.html', context=
{'workua_data': workua_data, 'rabotaua_data':rabotaua_data})
forms.py
from django import forms
from django.forms import ModelForm
from .models import Page
class PageForm(forms.ModelForm):
class Meta:
model = Page
fields = ['language', 'city']
lang_options = [
('1', 'Python'),
('2', 'Javascript'),
('3', 'Java'),
('4', 'C#'),
]
city_options = [
('1', 'Киев'),
]
language = forms.ChoiceField(required=True, choices=lang_options)
city = forms.ChoiceField(required=True, choices=city_options)
index_page_form.html
{% extends 'base.html' %}
{% block title %}
Main page
{% endblock %}
{% block content %}
<h1 class="mt-5 mb-5 text-center">Сервис поиска работы</h1>
<p class="text-center">Это веб приложение позволяет осуществить поиск вакансий для программистов с популярнейших ресурсов работодателей Украины</p>
<form action="/" method="post" class="mt-5 mb-5 text-center">
{% csrf_token %}
<div class="form-row">
<div class="form-group col-md-6">
<label for="language-field">Выберите язык:</label>
<select class="form-control" name="language" id="language-field">
<option name="kiev_python" value="1">Python</option>
<option name="kiev_javascript" value="2">Javascript</option>
<option name="kiev_java" value="3">Java</option>
<option name="kiev_c" value="4">C#</option>
</select>
</div>
<div class="form-group col-md-6">
<label for="city-field">Выберите город:</label>
<select class="form-control" name="city" id="city-field">
<option value="1">Киев</option>
</select>
</div>
</div>
<button class="btn btn-outline-primary btn-block mt-3" type="submit">Поиск</button>
</form>
{% endblock %}
urls.py
from django.urls import path
from .views import *
urlpatterns = [
path('', index_page, name='index_page_url'),
path('result/kiev_python/', kiev_python, name='kiev_python_url'),
path('result/kiev_javascript/', kiev_javascript, name='kiev_javascript_url'),
path('result/kiev_java/', kiev_java, name='kiev_java_url'),
path('result/kiev_c_sharp/', kiev_c, name='kiev_c_url'),
]
答案 0 :(得分:0)
您使用的是django模板,因此可以使用动态上下文的标签。像这样:
form action="/{{ your_path}}" method="post" class="mt-5 mb-5 text-center">