我有以下网址:http://127.0.0.1:8000/application_form/Network%20Adminstrator/这个网址是用:path('application_form/<str:job_title>/', views.ApplicationForm.as_view(), name='application_form')生成的
我一直在尝试get_data = self.request.GET.get('job_title'),并期望得到Network Adminstrator,但它却返回了None
我的urls.py:
urlpatterns = [
path('application_form/<str:job_title>/', views.ApplicationForm.as_view(), name='application_form'),]
views.py:
class ApplicationForm(CreateView):
model = Requirements
form_class = ApplicationForm
template_name = 'requirements/job_specs.html'
# Passes the request object to forms
def get_form_kwargs(self):
kwargs = super(ApplicationForm, self).get_form_kwargs()
kwargs['request'] = self.request
return kwargsforms.py:
class ApplicationForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request')
super(ApplicationForm, self).__init__(*args, **kwargs)
get_data = self.request.GET.get('job_title')
print(get_data)
dic = {'job_title__job_title': get_data}
self.fields['qualifications'].queryset = Requirements.objects.get(**dic)
class Meta:
model = Applicants
fields = ['email', 'qualifications']
email = forms.EmailField(label='', max_length=100, required=True, widget=forms.TextInput(
attrs={'class': 'form-group form-control input-lg ', 'placeholder': 'Email'}), )
qualifications = forms.ModelMultipleChoiceField(queryset=None, widget=forms.CheckboxSelectMultiple)有什么想法或想法吗?我对Django的编程还是有点陌生,我非常感谢您的时间和知识。
发布于 2022-02-09 07:19:56
URL kwargs不是在请求中,而是在类本身中。试试self.kwargs.get('job_title')。如果它不在您的ApplicationForm中,您可以通过get_form_kwargs方法传递它们,就像传递请求一样
https://stackoverflow.com/questions/71045321
复制相似问题