Django表单不适用于DigitalOcean

2024-04-30 04:04:03 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我最近一直在尝试在DigitalOcean Ubuntu16.4服务器上部署一个Django web应用程序,终于能够用uWSGI、nginx加载视图,并让加密来实现安全连接。我唯一的问题是:有一些视图依赖于提交django表单来根据与用户的距离(视图中的GeoDjango查询)检索对象。所讨论的表单如下所示:

<form method= 'get' action="/foo/">{% csrf_token %}
        <input  id='latload'  type= 'number' step='any' value='0' name='latitude' style="display:none">
        <input  id='lonload'  type= 'number' step='any' value='0' name='longitude' style="display:none">




    <p id= 'walltext' >Here you can listen to the sounds in your area. To use your current location, click 
    </p>


    <input class="btn btn-success" type='submit' id='submit' value='here' style="color:#1d3b77; font-size: 25px; width: 100%;" disabled />
</form>

它接受从以前的Javascript getLocation()函数中检索到的lat和long,然后通过表单传递给/foo/view,后者按距离(GeoDjango)查询对象,如下所示:

def fetch_places_loc(request):
    lat= request.GET['latitude']
    lon= request.GET['longitude']
    finder_location = Point(float(lon),float(lat))

    nearby= Places.objects.filter(
        location__distance_lte=(
            finder_location,
            D(km=40))).distance(finder_location).order_by('distance').order_by('-rating__average')[:10]
    context= {
        'object_listboy': nearby,
        'title': 'wall',

    }
    return render(request, 'location/wall.html', context)

现在,在开发服务器上,它们一起工作并返回最接近的10个对象。在Git将项目克隆到DigitalOcean服务器并配置uWSGI、NGINX以及使用let's encrypt保护连接之后,视图不会返回任何结果。它重定向到“墙”页,列表中没有对象。我在浏览器控制台中没有遇到任何类型的错误,所有javascript都正常工作(返回lat和long)控制台.log(),并将其转换为Django形式)。有人知道发生了什么事吗?我已经在这个网站上工作了一段时间了,在接近完成的时候遇到了麻烦。我的直觉可能指向一个不正确的nginx服务器配置或者别的什么。如果您想看任何配置,请告诉我。你知道吗


Tags: 对象服务器视图id表单inputfindervalue
2条回答

如果您没有在请求中获得latitudelongitude,那么代码会在编写时抛出错误-request.GET['latitude']

所以,我猜查询没有返回结果。您可以通过在服务器上使用django shell,然后在那里运行带有一些值的数据库查询来调试它。你知道吗

联合国显示:无和检查是否有一些数据在表单中用javascript填充,我很肯定你必须允许网站地理定位你

相关问题 更多 >