[問題] Django admin後台建立自定義按鈕問題已刪文
各位好,小弟是剛接觸Django的菜鳥,今天練習在admin頁面新增一個按鈕執行如下的
功能,
def my_function(request):
print("發生什麼情況?")
return HttpResponse("功能已執行")
以下是我的腳本
views.py
from django.shortcuts import render
from django.http import HttpResponse
def my_function(request):
print("發生什麼情況?")
return HttpResponse("功能已執行")
-------------------------------------------
model.py
from django.db import models
class ForModel(models.Model):
class Meta:
verbose_name = 'Forever Model'
verbose_name_plural = 'Forever Models'
-------------------------------------------
admin.py
from django.urls import path
from django.contrib import admin
from Spo_APP import models
from .views import my_function
# Register your models here.
class SimpleAdmin(admin.ModelAdmin):
change_list_template = 'admin/change_list.html'
def get_urls(self):
urls = super().get_urls()
custom_urls = [
path('my_function/', self.my_function_view, name='my_function'),
]
return custom_urls + urls
def my_function_view(self, request):
return my_function(request)
admin.site.register(models.ForModel, SimpleAdmin)
--------------------------------------------------
change_list.html
{% extends "admin/change_list.html" %}
{% block object_tools %}
{{ block.super }}
<li>
<a href="{% url 'admin:my_function' %}" class="btn btn-primary">執行
my_function</a>
</li>
{% endblock %}
用上面的腳本執行後,admin頁面有多一個Forever Models的選項,但點擊進去之後就進
入了數據庫,沒有執行my_function,anaconda prompt也沒有輸出任何字,也沒有報錯,
,用show urls有找到/admin/Spo_APP/formodel/my_function/
Spo_APP.admin.my_function_view admin:my_function,也有試過另一種方法如下
views.py 跟 models.py都一樣,但調整了urls.py跟admins.py如下
urls.py
from django.contrib import admin
from Spo_APP.views import my_function
urlpatterns = [
path("admin/", admin.site.urls),
path('admin/Spo_APP/formodel', my_function),
]
---------------------------------------------------
admin.py
from django.urls import path
from django.contrib import admin
from SportBon_APP import models
from .views import my_function
class SimpleAdmin(admin.ModelAdmin):
change_list_template = 'admin/change_list.html'
admin.site.register(models.ForModel, SimpleAdmin)
這種方法在admin後臺頁面也是有出現Forever Models的按鈕,但是點進去一樣是跳到
Forever Models的數據庫裡面,而不是執行my_function函數,上網查好多資料還是不成
功,今天都卡在這裡,希望能有板上的前輩可以為小弟指點迷津,要怎麼做才能點擊
Forever models的按鈕是執行my_function的功能呢? 感激不盡~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.226.159.76 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1723562002.A.F74.html
Python 近期熱門文章
PTT數位生活區 即時熱門文章