【问题标题】:Button acting funny in Django按钮在 Django 中的行为很有趣
【发布时间】: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...
  • 请注意&lt;input&gt; 元素有一个&lt;button&gt; 没有。你试过给按钮一个value 属性了吗?
  • @MartijnPieters 我知道。你确定url.py文件中的url正确吗?
  • @Boky:因为据报道&lt;input&gt; 元素有效。

标签: python django


【解决方案1】:

只需将文件名从“url.py”更改为“urls.py”即可。

【讨论】:

  • 对不起,这是一个类型。实际文件名为“urls.py”。
猜你喜欢
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多