Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用从Django视图传递的上下文变量自动填充Django模板(无js)_Django_Django Forms_Django Templates_Django Views - Fatal编程技术网

使用从Django视图传递的上下文变量自动填充Django模板(无js)

使用从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

我有一个Django模板,它有一个
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
的作用。