【发布时间】:2020-03-29 14:20:08
【问题描述】:
我在 Django crud 操作中遇到了这个问题。我尝试使用 Django 创建一个 crud 操作。所有操作都工作正常,但仅更新操作不起作用。因为我试图单击编辑按钮并在编辑表单中显示数据并更改表单中的数据并单击 URL 中的更新按钮正在更改此类型 (http://localhost:8000/show/6/update/6) 。我需要这个网址 (http://localhost:8000/update/6)。我尝试了很多方法,但我无法在发生错误的地方得到错误。任何人都可以运行我的代码并提供 cmets。如何解决这个问题。
项目
urls.py
from django.contrib import admin
from django.conf.urls import url,include
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^',include('olcapp.urls'))
]
应用程序
urls.py
from django.conf.urls import url
from olcapp import views
urlpatterns = [
url(r'^$',views.get),
url(r'^post/$',views.post),
url(r'^show/([0-9]+)/$',views.getId),
url(r'^update/([0-9]+)/$',views.update,name='update'),
url(r'^delete/([0-9]+)/$',views.delete),
]
views.py
from django.shortcuts import render
from django.http import HttpResponse
from .models import CrudOperation
from .forms import CrudForm
# Create your views here.
def get(request):
form = CrudForm()
data = CrudOperation.objects.all()
return render(request,'index.html',{'form':form,'data':data})
def getId(request,id):
form = CrudForm()
data = CrudOperation.objects.get(id=id)
return render(request,'edit.html',{'form':form,'data':data})
def post(request):
form = CrudForm(request.POST)
if form.is_valid():
form.save()
return HttpResponse('<h1>post Method</h1>')
def update(request,id):
print(id)
data = CrudOperation.objects.get(id=id)
form = CrudForm(request.POST,instance=data)
if(form.is_valid()):
form.save()
return HttpResponse('<h1>update method</h1>')
def delete(request,id):
data = CrudOperation.objects.get(id=id)
data.delete()
return HttpResponse('<h1>Delete method</h1>')
模板
index.html
<h1> Registration Form </h1>
<form action="post/" method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="submit">
</form>
<h1>List of all user</h1>
<table style="width:100%">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
{% for i in data %}
<tr>
<td>{{ i.name }}</td>
<td>{{ i.email}}</td>
<td><a href="show/{{ i.id }}/">Edit</a></td>
<td><a href="delete/{{ i.id }}/">Delete</a></td>
</tr>
{% endfor %}
</table>
edit.html
<h1> Update Form </h1>
<form action="update/{{ data.id }}" method="POST">
{% csrf_token %}
<label>Name</label>
<input type="textbox" name="name" value="{{ data.name }}">
<label>Email</label>
<input type="textbox" name="email" value="{{ data.email }}">
<input type="submit" value="Update">
</form>
【问题讨论】:
标签: django django-models django-forms django-templates django-views