0

我对 django 很陌生,对编程来说也很陌生。我已经完成了 django 教程并在网上搜索了这个问题的答案,但无济于事,所以现在我在这里。我很困惑 post 如何与 django 一起工作。我看过的所有教程如何在显示网页的视图中具有返回函数。我明白了。但是,如果页面是从该返回语句呈现的,那么用户如何更新数据呢?return 后不能再更新了,因为函数停止了,对吧?我在这里想念什么?任何帮助将不胜感激,我在这里变得相当绝望。

4

3 回答 3

0

view用户更新函数逻辑中的数据。也就是说,如果用户想要更新一些东西,你可以将更新逻辑view放在return. 例如,你会这样做:

def update(request):
    item = <some model>.objects.get(<something>)
    <more code>
    return <something>
于 2012-10-02T05:26:42.070 回答
0

通常一个编辑视图函数包含两部分——一个用于更新数据,另一个用于显示更新表单。例如,

def user_edit(request):

    if request.method == 'POST':            # is this a save action?
        # save the user data

        user_id = request.POST.get('user_id')
        username = request.POST.get('username')
        description = request.POST.get('description')

        user = User.objects.get(id=user_id)
        user.username = username
        user.description = description
        user.save()

        return HttpResponseRedirect('/user/')          # redirect to index

    else:

        # show the edit form
        user_id = request.GET.get('user_id')
        user = User.object.get(id=user_id)

        return render_to_response('/user/edit.html', { 'user': user })

这条线有很多不同的选择if request.method == 'POST'。您还可以使用if request.POST.get('user_id')检查是否设置了指定字段,以确定这是否是保存操作。

于 2012-10-02T06:13:37.037 回答
0

Django 视图的一种模式(绝不是唯一的模式)是在视图的开头检查请求方法(GET 或 POST)。如果是 POST,则处理传入的数据(视图返回之前),然后返回呈现的模板或重定向。

def view_function(request):
    if request.method == 'POST':
        if data_is_valid(request.POST):
            save_data(request.POST)
            return HttpResponseRedirect('/somewhere/good')
        else:
            return render('template', {'errors': what_went_wrong}
    else:
        return render('template')
于 2012-10-02T06:14:04.177 回答