내 forms.py에서 views.py로 설정된 세션을 호출하고 싶습니다. 그게 가능하니?Django - views.py와 다른 모듈에서 세션을 호출하는 방법은 무엇입니까?
나는 그렇게하려고했지만 '요청'에 몇 가지 문제가 있습니다.
forms.py
from django import forms
class NormalForm(forms.Form):
options = [
('TEST','TEST'),
]
options_normalform = forms.ChoiceField(required=False, choices=options,widget=forms.RadioSelect(attrs={'class':'example_form'}), label='')
class ExampleForm(forms.Form):
def __init__(self, *args, **kwargs):
self.request = kwargs.pop('request', None)
super(ExampleForm, self).__init__(*args, **kwargs)
self.option_a = self.request.session['my_session']
self.options_list = [
('a', self.option_a),
('b', 'b'),
('c', 'c'),
]
self.options_form = forms.ChoiceField(required=False, choices=self.options_list,widget=forms.RadioSelect(attrs={'class':'example_form'}), label='')
views.py
from django.shortcuts import render
from .forms import ExampleForm, NormalForm
def example(request):
option_a = '123'
request.session['my_session'] = option_a
normalform = NormalForm
form = ExampleForm(request=request)
context = {
'form': form,
'normalform': normalform,
}
return render(request, 'index.html', context)
템플릿
<!DOCTYPE html>
<html>
<head>
<title>My App</title>
</head>
<body>
<!-- Header -->
<header>
<h1 id="logo">MY APP</h1>
</header>
<!-- Options form -->
<div id="forms">
<form id="normalform" method="post">
{% csrf_token %}
{{normalform}}
</form>
<form id="form" method="post">
{% csrf_token %}
{{form}}
</form>
</div>
<!-- End of options form -->
<!-- Footer -->
<footer id="main-footer">
<p>Copyright © 2017-2017 | my APP </p>
</footer>
<!-- End of Footer -->
</body>
</html>
나는 t을 가져 오려고하지 않는다 이 값은 양식이라고하는 동일한보기 안에 만들어지기 때문에 세션을 만드는 대신 값을 사용합니다. 따라서 나는 원형 오류가 발생합니다.
이 값을 세션에 저장하고 양식으로 보내면이 순환 문제가 제기되지 않기를 바랍니다.
P. 저는 프로그래밍 초보자입니다.
[편집 됨] 뷰에 템플릿을 찾을 수 있는지 테스트 할 새 템플릿과 템플릿이 포함되었습니다.
답해 주셔서 감사합니다. 정말 감사. self.option_a = self.request.session [ 'my_session'] AttributeError : 'NoneType'객체에 '세션'속성이 없습니다. 그것이 무엇인지 알 수 있습니까? – Filipe
@Filipe 죄송합니다 - 죄송합니다! 보기 함수에서'form = ExampleForm (request)'줄을'form = ExampleForm (request = request)'로 대체하십시오. 키워드 인수 여야합니다. 나는 또한 대답을 업데이트했다. – hoefling
문제 없음! 더 이상 오류가 발생하지 않지만 양식이 렌더링되지 않았습니다. 그게 뭔지 알아? – Filipe