[問題] Django admin後台建立自定義按鈕問題已刪文

看板Python作者 (ting*2)時間3月前 (2024/08/13 23:13), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
各位好,小弟是剛接觸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
文章代碼(AID): #1cktWIzq (Python)
文章代碼(AID): #1cktWIzq (Python)