0

我对 Django 和 Japplet 很陌生,这是我与他们合作的第一个项目。Japplet 从 django 静态文件夹中获取一些图像,并允许用户添加一些线条和标记。最后,当单击 JApplet 上的“保存”按钮时,它应该对 Django 服务器进行一些 POST 调用,以保存标记和行。其实我只是用标记测试,我做不到。

这是标记的模型:

class Point(models.Model):
    id_edificio = models.ForeignKey(Building)
    RFID = models.CharField(max_length=200)
    x = models.IntegerField()
    y = models.IntegerField()
    piano = models.IntegerField()
    ingresso = models.BooleanField()

他的观点:

def point(request, id_edificio, RFID, x, y, piano):
    point = csrf_exempt(point)
    if request.method == 'POST':
        get_object_or_404(Building, pk=id_edificio)
        p = Point()
        p.id_edificio = id_edificio
        p.RFID = RFID
        p.x = x
        p.y= y
        p.piano = piano
        p.ingresso = True
        p.save()

我还没有实现模板,因为我不需要使用 Web 浏览器访问此视图。

网址:

 url(r'^buildings/generate/point', 'buildings.views.point'),

JApplet保存方法:

private void saveData(MarkerArrayList markers, PathArrayList paths) {
    String response;
    URL endpoint = null;
    try {
    endpoint = new URL("http://127.0.0.1:8000/buildings/generate/point");
    } catch (MalformedURLException e1) {
        e1.printStackTrace();
    }

    for(Marker m: markers) {
        Reader data = new StringReader("id_edificio="+id_building+"&"+m.toString());
        try {
            Post.postData(data, endpoint);
        } catch (Exception e) {e.printStackTrace();}
    }
}

标记 toString() 方法:

public String toString() {
    return "RFID="+ RFID + "&" +
        "x=" + 
        "y=" + y + "&" + 
        "piano=" + floor + "&";
}

我假设我的 java 方法 Post 是正确的。如果你想看,可以问我;)

来自 Django 服务器的 POST 错误:

[28/Sep/2012 07:21:46] "POST /buildings/generate/point HTTP/1.1" 403 2294

我不知道要尝试知道,我在你的手中。

谢谢你

4

1 回答 1

0

错误的数量令人难以置信。

所以这是标记的新视图,现在我将忽略 csrf 标记:

@csrf_exempt
def point(request):
    if request.method == 'POST': 
        p = Point()
        building = Building.objects.get(pk = request.POST["id_edificio"]) 
        p.id_edificio = building
        p.RFID = request.POST["RFID"]         
        p.x = request.POST["x"] 
        p.y= request.POST["y"]
        p.piano = request.POST["piano"] 
        p.ingresso = request.POST["ingresso"]
        p.save() 

它有效!Marker toString() 方法中也有一些小错误(作为 'X' 而不是 'x'),但它们只是小错误。

于 2012-09-28T14:08:49.847 回答