Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.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
Python django中没有意外的表单字段_Python_Django_Django Forms - Fatal编程技术网

Python django中没有意外的表单字段

Python django中没有意外的表单字段,python,django,django-forms,Python,Django,Django Forms,我的项目中有这个django的forms.py文件 from django import forms class DateInput(forms.DateTimeInput): input_type='date' class userRequest(forms.Form): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) lat_Origin = f

我的项目中有这个django的forms.py文件

from django import forms

class DateInput(forms.DateTimeInput):
    input_type='date'
    
class userRequest(forms.Form):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    lat_Origin = forms.FloatField(widget=forms.HiddenInput(attrs={"id":"lat_Origin"}),required=False,initial=181)
    lon_Origin = forms.FloatField(widget=forms.HiddenInput(attrs={"id":"lon_Origin"}),required=False,initial=181)
    lat_Dest = forms.FloatField(widget=forms.HiddenInput(attrs={"id":"lat_Dest"}),required=False,initial=181)
    lon_Dest = forms.FloatField(widget=forms.HiddenInput(attrs={"id":"lon_Dest"}),required=False,initial=181)

    origin_address=forms.CharField(max_length=200,widget=forms.TextInput(attrs={"class":"data_aux data","id":"origin_address"}))
    destination_address=forms.CharField(max_length=200,widget=forms.TextInput(attrs={"class":"data_aux data","id":"destination_address"}))

我不知道为什么lat_Origin、lon_Origin、lat_Dest和lon_Dest在post方法中都没有 因为它们的初始值是181

在这里您可以看到以下视图:

def home(request):

    blablaTrips={}
    skyscannerTrips={}
    trips_busTrain={}


    if request.method == 'POST':
        form = userRequest(request.POST)
        if form.is_valid():
            print((form.cleaned_data))
        else:

            form = userRequest()


在这里可以看到打印结果(form.cleaned_数据)

我也在javascript文件中编辑django的表单,但我得到了一个错误UncaughtTypeError:无法将属性“value”设置为null

function get_address_withLocation(lat, lng, map, is_origin) {
    infoWindow = new google.maps.InfoWindow();
    const geocoder = new google.maps.Geocoder();
    const latlng = {
        lat: lat,
        lng: lng,
    };
    geocoder.geocode({ location: latlng }, (results, status) => {
        if (status === "OK") {
            if (results[0]) {
                map.setZoom(7);
                const marker = new google.maps.Marker({
                    position: latlng,
                    map: map,
                });
                contentString =
                    '<div id="content-map">' +
                    '<p>' + results[0].formatted_address + '</p>' +
                    "</div>";
                infoWindow.setContent(contentString);
                infoWindow.open(map, marker);


                if (is_origin) {
                    document.getElementById('origin_address').value = results[0].formatted_address;
                    console.log(lat);
                    console.log(lng);
                    document.getElementById("lat_Origin").value = lat;
                    document.getElementById("lon_Origin").value = lng;
                    // document.getElementById("lat_Origin").value = 40;
                    // document.getElementById("lon_Origin").value = 2;

                    remove_mapMarkers('origin_address', marker)


                } else {
                    console.log(lat);
                    console.log(lng);
                    document.getElementById('destination_address').value = results[0].formatted_address;
                    document.getElementById("lat_Dest").value = lat;
                    document.getElementById("lon_Dest").value = lng;
                    remove_mapMarkers('destination_address', marker);


                }



            } else {
                window.alert("No results found");
            }

        } else {
            window.alert("Geocoder failed due to: " + status);
        }
    });



}



函数获取带位置的地址(纬度、液化天然气、地图、原点){
infoWindow=new google.maps.infoWindow();
const geocoder=新的google.maps.geocoder();
常数={
拉特:拉特,
液化天然气:液化天然气,
};
geocoder.geocode({location:latlng},(结果,状态)=>{
如果(状态==“正常”){
如果(结果[0]){
map.setZoom(7);
const marker=new google.maps.marker({
位置:latlng,
地图:地图,
});
内容字符串=
'' +
“”+结果[0]。格式化的地址+”

”+ ""; setContent(contentString); 信息窗口。打开(地图、标记); 如果(是原产地){ document.getElementById('origin_address')。value=results[0]。格式化的_address; 控制台日志(lat); 控制台日志(lng); document.getElementById(“lat_Origin”).value=lat; document.getElementById(“lon_Origin”)。值=液化天然气; //document.getElementById(“lat_Origin”)。值=40; //document.getElementById(“lon_Origin”).value=2; 删除映射标记(“源地址”,标记) }否则{ 控制台日志(lat); 控制台日志(lng); document.getElementById('destination_address')。value=results[0]。格式化的_address; document.getElementById(“lat_Dest”).value=lat; document.getElementById(“lon_Dest”)。值=液化天然气; 删除地图标记(“目的地地址”,标记); } }否则{ 窗口警报(“未找到结果”); } }否则{ 窗口警报(“地理编码器因“+状态”而失败); } }); }
由以下人员指定:

(…)这就是为什么仅为未绑定表单显示初始值的原因。对于绑定表单,HTML输出将使用绑定数据

因此,只有对于无绑定的表单(没有作为数据传递的
request.POST
),它才会使用
首字母

因此,您可以使用初始数据发出GET请求,如果用户不更改这些数据,并发出POST请求,那么这些初始数据将成为POST请求的一部分

def home(request):

    blablaTrips={}
    skyscannerTrips={}
    trips_busTrain={}
    
    if request.method == 'POST':
        form = userRequest(request.POST)
        if form.is_valid():
            print((form.cleaned_data))
    else:
        #            ↓ this form will work with the initial data
        form = UserRequest()
    return render(request, 'some-template.html', {'form': form})
def home(请求):
blablaTrips={}
skyscannerTrips={}
trips_busTrain={}
如果request.method==“POST”:
form=userRequest(request.POST)
如果form.is_有效():
打印((表格数据))
其他:
#&向下箭头;此表单将与初始数据一起使用
form=UserRequest()

返回render(请求'some template.html',{'form':form})
仅当您在模板中呈现html表单时才返回。因此,这些仅适用于未绑定的表单(因此没有
请求.POST
数据)。我认为不适用,因为我试图在javascript文件中设置不同的值,并且我收到一个错误Uncaught TypeError:无法设置nullyes的属性“值”,如果使用AJAX调用,并且篡改数据,当然,有界形式将不包含初始值,而是
null
。关键是它使用初始数据呈现表单,如果表单(正确)提交,初始值仍然是值,因此Django可以使用它,如果它使用
request.POST
,构造表单。但是在form=UserRequest()中,我无法打印form.u数据。它给了我一个错误。在post方法中,我继续得到一个Nonevalue@andriuu99:这是用于GET请求的,以便在模板上呈现表单。之后,用户将提交表单,然后通过POST请求完成。然后,HTML将对所有表单字段的值进行正确编码,因此,如果这些字段没有更改,则采用字段的
initial
值。@andriuu99:因此,您不应该检查
UserRequest
的清理数据。这是为在HTML页面上呈现而构造的表单。然后,
UserRequest(request.POST)
将分析由HTML表单触发的POST请求。但是在POST方法中,我仍然遇到yout解决方案的问题。我不知道为什么。我正在使用javascript文件和文档;给我一个错误:未捕获的TypeError:无法将属性“value”设置为null
def home(request):

    blablaTrips={}
    skyscannerTrips={}
    trips_busTrain={}
    
    if request.method == 'POST':
        form = userRequest(request.POST)
        if form.is_valid():
            print((form.cleaned_data))
    else:
        #            ↓ this form will work with the initial data
        form = UserRequest()
    return render(request, 'some-template.html', {'form': form})