簡體   English   中英

用戶登錄DJANGO后如何保存數據

[英]How to save a data after user logs in DJANGO

用戶登錄后,用戶便可以提交表單。 單擊提交按鈕時,數據已存儲在DB中,但是我應該如何將此信息連接到提交用戶。

我需要代碼以及新數據庫的結構

有種從Django開始的感覺。 任何幫助,將不勝感激!!!

我已經將用戶作為外鍵包含在CustomizeRequest模型中,但是現在如何填寫此信息?

確切的場景 :用戶登錄后,一旦他進入contactUs.html ,他將提交一個表格,該表格告知旅客人數。 該號碼被存儲在數據庫中。 但是現在我如何將這些數字中的每一個連接到提交的用戶?

models.py

class CustomizeRequest(models.Model):
    user = models.ForeignKey(User)
    travellers = models.CharField(max_length=2)

    def __str__(self):
        return self.travellers

contactUs.html

<form method="POST" class="form-horizontal">
{% csrf_token %}
<div class="btn-group" data-toggle="buttons">
{% for radio in crform.travellers %}
    <label class="btn btn-default {% if radio.choice_label = '1'   %}active{% endif %}" for="{{ radio.id_for_label }}">
      {{ radio.choice_label }}
      {{ radio.tag }}
    </label>
{% endfor %}
</div>
<button type="submit" class="btn btn-default btn-block btn-warning">SUBMIT</button>
</form>

views.py

def contactUs(request):
    if request.method=="POST":
        form = CustomizeRequestForm(request.POST)
        form.save()
    else:
        form = CustomizeRequestForm()
    context_dict = {'form': form}
    return render(request, 'tour/contactUs.html', context_dict)

記錄的用戶可用作request.user屬性。 您可以使用form.save(commit = False)技巧獲取未保存的模型實例,設置user字段,然后將實例保存到數據庫:

from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect, render

@login_required
def contactUs(request):    
    if request.method == "POST":
        form = CustomizeRequestForm(request.POST)
        if form.is_valid():
            customize_request = form.save(commit=False)
            customize_request.user = request.user
            customize_request.save()
            return redirect('.')
    else:
        form = CustomizeRequestForm()
    context_dict = {'form': form}
    return render(request, 'tour/contactUs.html', context_dict)

基於雙體船答案(請檢查表格是否有效):

from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect, render

@login_required
def contactUs(request):    
    form = CustomizeRequestForm(data=request.POST or None)

    if request.method == "POST":
        if form.is_valid():
             customize_request = form.save(commit=False)
             customize_request.user = request.user
             customize_request.save()
             return redirect('.')
        else:
             pass # could add a notification here

    context_dict = {'form': form}
    return render(request, 'tour/contactUs.html', context_dict)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM