TODO 列表中的用户特定页面
User Specific Page in TODO List
我正在制作一个简单的 todolist 应用程序,但是当我尝试创建用户特定页面时,我无法添加新任务可能是因为数据库没有获得所有必需的数据(即任务的所有者)。
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class value(models.Model):
task=models.CharField(max_length=200)
complete=models.BooleanField(default=False)
created=models.DateTimeField(auto_now_add=True)
owner=models.ForeignKey(User,on_delete=models.PROTECT)
def __str__(self):
return self.task
views.py
from http.client import HTTPResponse
from urllib import response
from django.shortcuts import render,redirect
from todo.models import value
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
# Create your views here.
from .forms import TitleForm
from django.urls import reverse
from django.contrib.auth.models import User
def home(request):
values=value.objects.all()
form=TitleForm()
if request.method=='POST':
form=TitleForm(request.POST)
if form.is_valid():
new_data=form.save(commit=False)
new_data.owner=request.user()
new_data.save()
return HttpResponseRedirect('/')
context={'form':form,'values':values}
return render(request,'home.html',context)
#update
def update(request,id):
ggwp=value.objects.get(id=id)
form=TitleForm(instance=ggwp)
if request.method == 'POST':
form=TitleForm(request.POST,instance=ggwp)
if form.is_valid:
form.save()
return redirect('home')
context={'form':form,}
return render(request,'update.html',context)
#delete
def delete_data(request, id ):
if request.method=="POST":
ggwp=value.objects.get(id=id)
ggwp.delete()
return HttpResponseRedirect(reverse('deldata', kwargs={'id':id}))
return redirect("/")
forms.py
from django import forms
from django.forms import ModelForm
from .models import value
from django import forms
class TitleForm(forms.ModelForm):
class Meta:
model= value
fields='__all__'
urls.py(应用程序)
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns=[
path('',views.home,name='home'),
path('delete/<str:id>', views.delete_data,name='deldata'),
path('update/<str:id>',views.update,name='update')
]
home.html(主页)
<form method="POST">
{% if user.is_authenticated %}
Hello,{{user.username}}<br>
<a href="accounts/logout">Logout</a>
{% else%}
<a href="accounts/register">Register</a>
<a href="accounts/login1">login</a>
{% endif %}
</form>
<div class="p-3 mb-2 bg-warning text-dark" style="text-align: center;">
<form action="/" method="post" >
{% csrf_token %}
{{form.task}}
<input class='btn btm-sm btn-info' type='submit' name='add' value="add" >
</form>
{% for val in values %}
{% if val.complete == True %}
<s>{{val}}</s>
{% else %}
<span>{{val}}</span>
{% endif %}
<form action="{% url 'deldata' val.id %}" method="POST" class="in-line">
{% csrf_token %}
<input class='btn btm-sm btn-danger' type="submit" name="delete" value="delete">
<a class='btn btm-sm btn-info' href="{% url 'update' val.id %}" >Update</a>
</form>
{% endfor %}
</div>
Home.html 看起来像这样:
todo
当我想添加一个任务并点击添加时,什么也没有发生。它只会重定向回同一页面,但不会将数据插入数据库。
如果问题有问题,真的很抱歉!
Home.html :
<div class = "divname">
{% if user.is_authenticated %}
Hello,{{user.username}}<br>
<a href="accounts/logout">Logout</a>
{% else%}
<a href="accounts/register">Register</a>
<a href="accounts/login1">login</a>
{% endif %}
</div>
<div class="p-3 mb-2 bg-warning text-dark" style="text-align: center;">
<form method="POST" >
{% csrf_token %}
{{form}}
<input class='btn btm-sm btn-info' type='submit' name='add' value="add" >
</form>
{% for val in values %}
{% if val.complete == True %}
<s>{{val}}</s>
{% else %}
<span>{{val}}</span>
{% endif %}
<form action="{% url 'deldata' val.id %}" method="POST" class="in-line">
{% csrf_token %}
<input class='btn btm-sm btn-danger' type="submit" name="delete" value="delete">
<a class='btn btm-sm btn-info' href="{% url 'update' val.id %}" >Update</a>
</form>
{% endfor %}
</div>
- 更新 1:在表单中排除用户并在视图中添加当前用户
#不要将 Owner 添加到模型表单字段中
forms.py:
from django import forms
from django.forms import ModelForm
from .models import value
from django import forms
class TitleForm(forms.ModelForm):
class Meta:
model= value
fields=['task', 'complete', 'created']
Views.py:
def home(request):
values=value.objects.all()
form=TitleForm()
if request.method=='POST':
form=TitleForm(request.POST)
if form.is_valid():
new_data=form.save(commit=False)
new_data.owner=request.user
new_data.save()
return HttpResponseRedirect('/')
context={'form':form,'values':values}
return render(request,'home.html',context)
我正在制作一个简单的 todolist 应用程序,但是当我尝试创建用户特定页面时,我无法添加新任务可能是因为数据库没有获得所有必需的数据(即任务的所有者)。
models.py
from django.db import models
from django.contrib.auth.models import User
# Create your models here.
class value(models.Model):
task=models.CharField(max_length=200)
complete=models.BooleanField(default=False)
created=models.DateTimeField(auto_now_add=True)
owner=models.ForeignKey(User,on_delete=models.PROTECT)
def __str__(self):
return self.task
views.py
from http.client import HTTPResponse
from urllib import response
from django.shortcuts import render,redirect
from todo.models import value
from django.http import HttpResponseRedirect
from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User
# Create your views here.
from .forms import TitleForm
from django.urls import reverse
from django.contrib.auth.models import User
def home(request):
values=value.objects.all()
form=TitleForm()
if request.method=='POST':
form=TitleForm(request.POST)
if form.is_valid():
new_data=form.save(commit=False)
new_data.owner=request.user()
new_data.save()
return HttpResponseRedirect('/')
context={'form':form,'values':values}
return render(request,'home.html',context)
#update
def update(request,id):
ggwp=value.objects.get(id=id)
form=TitleForm(instance=ggwp)
if request.method == 'POST':
form=TitleForm(request.POST,instance=ggwp)
if form.is_valid:
form.save()
return redirect('home')
context={'form':form,}
return render(request,'update.html',context)
#delete
def delete_data(request, id ):
if request.method=="POST":
ggwp=value.objects.get(id=id)
ggwp.delete()
return HttpResponseRedirect(reverse('deldata', kwargs={'id':id}))
return redirect("/")
forms.py
from django import forms
from django.forms import ModelForm
from .models import value
from django import forms
class TitleForm(forms.ModelForm):
class Meta:
model= value
fields='__all__'
urls.py(应用程序)
from django.conf.urls import url
from django.urls import path
from . import views
urlpatterns=[
path('',views.home,name='home'),
path('delete/<str:id>', views.delete_data,name='deldata'),
path('update/<str:id>',views.update,name='update')
]
home.html(主页)
<form method="POST">
{% if user.is_authenticated %}
Hello,{{user.username}}<br>
<a href="accounts/logout">Logout</a>
{% else%}
<a href="accounts/register">Register</a>
<a href="accounts/login1">login</a>
{% endif %}
</form>
<div class="p-3 mb-2 bg-warning text-dark" style="text-align: center;">
<form action="/" method="post" >
{% csrf_token %}
{{form.task}}
<input class='btn btm-sm btn-info' type='submit' name='add' value="add" >
</form>
{% for val in values %}
{% if val.complete == True %}
<s>{{val}}</s>
{% else %}
<span>{{val}}</span>
{% endif %}
<form action="{% url 'deldata' val.id %}" method="POST" class="in-line">
{% csrf_token %}
<input class='btn btm-sm btn-danger' type="submit" name="delete" value="delete">
<a class='btn btm-sm btn-info' href="{% url 'update' val.id %}" >Update</a>
</form>
{% endfor %}
</div>
Home.html 看起来像这样: todo
当我想添加一个任务并点击添加时,什么也没有发生。它只会重定向回同一页面,但不会将数据插入数据库。 如果问题有问题,真的很抱歉!
Home.html :
<div class = "divname">
{% if user.is_authenticated %}
Hello,{{user.username}}<br>
<a href="accounts/logout">Logout</a>
{% else%}
<a href="accounts/register">Register</a>
<a href="accounts/login1">login</a>
{% endif %}
</div>
<div class="p-3 mb-2 bg-warning text-dark" style="text-align: center;">
<form method="POST" >
{% csrf_token %}
{{form}}
<input class='btn btm-sm btn-info' type='submit' name='add' value="add" >
</form>
{% for val in values %}
{% if val.complete == True %}
<s>{{val}}</s>
{% else %}
<span>{{val}}</span>
{% endif %}
<form action="{% url 'deldata' val.id %}" method="POST" class="in-line">
{% csrf_token %}
<input class='btn btm-sm btn-danger' type="submit" name="delete" value="delete">
<a class='btn btm-sm btn-info' href="{% url 'update' val.id %}" >Update</a>
</form>
{% endfor %}
</div>
- 更新 1:在表单中排除用户并在视图中添加当前用户
#不要将 Owner 添加到模型表单字段中
forms.py:
from django import forms
from django.forms import ModelForm
from .models import value
from django import forms
class TitleForm(forms.ModelForm):
class Meta:
model= value
fields=['task', 'complete', 'created']
Views.py:
def home(request):
values=value.objects.all()
form=TitleForm()
if request.method=='POST':
form=TitleForm(request.POST)
if form.is_valid():
new_data=form.save(commit=False)
new_data.owner=request.user
new_data.save()
return HttpResponseRedirect('/')
context={'form':form,'values':values}
return render(request,'home.html',context)