使用从Django视图传递的上下文变量自动填充Django模板(无js)
我有一个Django模板,它有一个使用从Django视图传递的上下文变量自动填充Django模板(无js),django,django-forms,django-templates,django-views,Django,Django Forms,Django Templates,Django Views,我有一个Django模板,它有一个CharField。用户可以在此处输入手机号码并提交 连接到此模板的视图有时会传递到所述模板,一个上下文变量包含预定义的电话号码{{number} 如何使用{number}自动填充Django模板中的CharField 模板代码如下所示: <form action="{% url 'user_phonenumber' slug=unique num=decision %}" method="POST"> {% csrf_token %} <b
CharField
。用户可以在此处输入手机号码并提交
连接到此模板的视图有时会传递到所述模板,一个上下文变量包含预定义的电话号码{{number}
如何使用{number}
自动填充Django模板中的CharField
模板代码如下所示:
<form action="{% url 'user_phonenumber' slug=unique num=decision %}" method="POST">
{% csrf_token %}
<b style="font-size:90%;color:green;">Enter your mobile number:</b><br><br>
{{ form.mobile_number }}<br><br>
<input type="submit" name="number" value="OK"><br>
</form>
在views.py中,我只需要:
class UserPhoneNumberView(FormView):
form_class = UserPhoneNumberForm
template_name = "get_user_phonenumber.html"
def get_context_data(self, **kwargs):
context = super(UserPhoneNumberView, self).get_context_data(**kwargs)
if self.request.user.is_authenticated():
#some code to determine what number should be
context["number"] = number
return context
我看了一些。我链接的最后一个解决方案接近于解决这个问题,但解决方案不是针对动态值(这是我所需要的),而且是针对modelforms的。剩下的部分并不能完全满足我的特殊需求。为了实现这一点,我需要超越我的FormView的
def获取_initial(self):
。也就是说,不要将上下文变量传递给模板,而是将变量作为initial
通过get_initial()
传递给相关表单
我是这样做的:
def get_initial(self):
"""
Returns the initial data to use for forms on this view.
"""
if self.request.user.is_authenticated():
#What's the latest chatpicmessage which houses a pic you own
try:
msg = PicMessage.objects.filter(which_pic__owner=self.request.user).latest('sending_time')
self.initial = {'mobile_number': msg.what_number} #initial needs to be passed a dictionary
return self.initial
except:
return self.initial
else:#i.e user is not authenticated
return self.initial
return self.initial
有关这方面的更多文档可以在此处找到:我需要超越我的FormView的
def获取初始值(self):
来实现这一点。也就是说,不要将上下文变量传递给模板,而是将变量作为initial
通过get_initial()
传递给相关表单
我是这样做的:
def get_initial(self):
"""
Returns the initial data to use for forms on this view.
"""
if self.request.user.is_authenticated():
#What's the latest chatpicmessage which houses a pic you own
try:
msg = PicMessage.objects.filter(which_pic__owner=self.request.user).latest('sending_time')
self.initial = {'mobile_number': msg.what_number} #initial needs to be passed a dictionary
return self.initial
except:
return self.initial
else:#i.e user is not authenticated
return self.initial
return self.initial
有关这方面的更多文档可以在此处找到:您应该显示视图。您是否尝试将
initial
参数传递给表单实例化,如下面的文档所示?请注意,您链接到的最后一个答案准确地显示了您要做的事情。添加了视图(它是CBV)。我没有设置initial
。我现在明白我做错了什么。我是否应该使用FormView CBV的def get_initial(self):
方法来实现这一点?是表单字段的关键字参数是,这正是表单视图中的get\u initial
的作用。您应该显示视图。您是否尝试将initial
参数传递给表单实例化,如下面的文档所示?请注意,您链接到的最后一个答案准确地显示了您要做的事情。添加了视图(它是CBV)。我没有设置initial
。我现在明白我做错了什么。我是否应该使用FormView CBV的def get_initial(self):
方法来实现这一点?是表单字段的关键字参数是,这正是表单视图中的get\u initial
的作用。