【发布时间】:2017-10-04 21:00:50
【问题描述】:
在this turorial 之后,我一直在尝试更好地理解 Django 中的 DeleteView,并且一切正常,只是我的按钮标签似乎没有按应有的方式运行。相反,我必须使用输入标签才能使其工作,这使得无法将 glyphicon-trash(bootstrap) 放置在提交按钮内。
我想知道它是否与我在 pythonanywhere.com 上运行它有关,因为一些网站建议按钮标签在某些情况下不能作为 <input type="submit"> 的替代品正常工作。
这是我的代码。 (为了比较,我保留了按钮标签和输入标签。)
<ul>
{% for card in all_cards %}
<li>{{ card.front }}
<form action="{% url 'delete-card' card.id %}" method="post">
{% csrf_token %}
<input type="hidden" name="card_id" value="{{ card.id }}" >
<input type="submit" class="btn btn-default" value="DELETE">
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-trash"></span></button>
</form>
</li>
{% endfor %}
</ul>
最让我困惑的是,当按钮标签被点击时,它给了我这个错误信息。
Failed to load resource: the server responded with a /like_treasure/ status of 404 (Not Found)
*like_treasure 是在完全不同的 Django 项目中使用的目录的名称。
任何建议将不胜感激。
url.py
from django.conf.urls import url
from django.conf import settings
from django.views.static import serve
from . import views
# import PIL
urlpatterns = [
url(r'^$', views.IndexView.as_view(), name="index"),
url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='detail'),
url(r'^card/add/$', views.CreateCard.as_view(), name='add-card'),
url(r'^card/(?P<pk>[0-9]+)/update/$', views.UpdateCard.as_view(), name='update-card'),
url(r'^card/(?P<pk>[0-9]+)/delete/$', views.DeleteCard.as_view(), name='delete-card'),
]
if settings.DEBUG:
urlpatterns += [
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT,}),
]
views.py
from django.shortcuts import render
from django.http import HttpResponse
from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.core.urlresolvers import reverse_lazy
from .models import Card
# from django.http import HttpResponseRedirect
# Create your views here.
class IndexView(generic.ListView):
template_name = "index.html"
context_object_name = "all_cards"
def get_queryset(self):
return Card.objects.all()
class DetailView(generic.DetailView):
model = Card
template_name = "detail.html"
class CreateCard(CreateView):
model = Card
fields = ['front', 'back']
class UpdateCard(UpdateView):
model = Card
fields = ['front', 'back']
class DeleteCard(DeleteView):
model = Card
success_url = reverse_lazy('index')
【问题讨论】:
-
向我们展示 url.py 文件..
-
@Boky: 两个提交按钮都发布到同一个 URL...
-
请注意
<input>元素有一个值,<button>没有。你试过给按钮一个value属性了吗? -
@MartijnPieters 我知道。你确定
url.py文件中的url正确吗? -
@Boky:因为据报道
<input>元素有效。