【发布时间】:2023-03-08 21:38:01
【问题描述】:
我正在尝试通过获取用户的详细信息并设置 Bar 实例来更新用户的 Bar 信息。但是每次我点击仪表板上的链接时,它都会将我重定向到仪表板,如果它不是 post 方法,我会在 else 语句中使用它。
view.py
def UpdateUserBar(request):
user = request.user.id
bar = Bar.objects.get(user_id=user)
form = UpdateBar(instance=bar)
if request.method == 'POST':
form = UpdateBar(request.POST,request.FILES, instance=bar)
if form.is_valid():
form.save()
return redirect('/updatebar')
messages.success(request, 'Bar Information Updated successfully')
else:
return redirect('/dashboard')
messages.error(request, 'Only Post method is accepted')
else:
form = UpdateBar(instance=bar)
context = {"form":form, "bar":bar}
return render(request, "dashboard/super/landlord/update_bar.html", context)
forms.py
class UpdateBar(ModelForm):
class Meta:
model = Bar
fields = '__all__'
models.py
class Bar(models.Model):
status = (
("open", "open"),
("closed", "closed"),
("pending", "pending"),
)
user_id = models.OneToOneField(User, on_delete=models.CASCADE)
name = models.CharField(max_length=50)
address = models.CharField(max_length=100)
opening_time = models.TimeField()
closing_time = models.TimeField()
status = models.CharField(choices=status, default="pending", max_length=14)
image = models.ImageField(upload_to='images/bars', default='images/bars/default.jpg')
def __str__(self):
return self.name
updatebar.html
{% load i18n widget_tweaks %}
<form class="form-horizontal" role="form" method="post" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<label class="col-md-2 control-label">{{ form.name.label }}:</label>
<div class="col-md-10">
<input type="text" id="id_name" name="name" class="form-control" value="{{user.name}}" disabled>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.user_id.label }}:</label>
<div class="col-md-10">
<input id="id_user_id" name="user_id" type="text" class="form-control" value="{{user_email}}" disabled>
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.address.label }}:</label>
<div class="col-md-10">
{{ form.address|attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.opening_time.label }}</label>
<div class="col-md-10">
{{ form.opening_time | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.closing_time.label }}</label>
<div class="col-md-10">
{{ form.closing_time | attr:"class:form-control" }}
</div>
</div>
<div class="form-group">
<label class="col-md-2 control-label">{{ form.status.label }}</label>
<div class="col-md-10">
{{ form.status| attr:"class:form-control" }}
</div>
</div>
<div class=" form-group ">
<div class="input-group col-lg-12 ">
<label class="col-md-2 control-label">{{ form.image.label}}</label>
<div class="col-md-10">
<div class="bootstrap-timepicker">
{{ form.image| attr:"class:form-control" }} </div>
</div><!-- input-group --> </div>
</div>
<div class="form-group">
<div class="col-md-10">
<center><button class="btn btn-primary" type="submit">Update Bar Info</button></center>
</div>
</div>
</form>
每次我尝试访问访问 URL 时,它都会将我重定向到仪表板。
【问题讨论】:
-
向我们展示您的 html 表单
-
已更新,再次检查问题
-
表单先用GET请求渲染,你不允许它渲染
-
我不是很了解,因为我是初学者。
标签: django django-models django-views django-forms django-templates