django 使用一个 url 运行自定义视图类方法
Posted
技术标签:
【中文标题】django 使用一个 url 运行自定义视图类方法【英文标题】:django run custom views class method with one url 【发布时间】:2020-06-10 19:32:11 【问题描述】:我是 Django 新手。我想使用视图文件中的自定义方法来管理我的数据库。例如,我有这段代码我想用 javascript 运行 - 我写了这段代码:
Js:
$.ajax(
type: 'POST',
url: '/ClassManager/',
data:
data: data,
csrfmiddlewaretoken: csrftoken,
,
success: function()
alert("IT WORKED")
,
error: function()
alert('error');
)
views.py
def expfunc():
if request.method == 'POST':
user = User.objects.get(pk=1)
addlst = List(content = "list content", creator = user)
addlst.save()
urls.py
urlpatterns = [
path('ClassManager/', views.expfunc),
]
现在,问题是,对于我想在 views.py 中创建的每个新函数,我都需要在 urls.py 中添加另一行。
我的问题是 - 是否有办法使用所有自定义方法创建一个类,并使用一个 url 和不同的数据访问它们?
例如:
Js:
$.ajax(
type: 'POST',
url: '/ClassManager/functionone()',
data:
data: data
csrfmiddlewaretoken: csrftoken,
,
success: function()
alert("IT WORKED")
,
error: function()
alert('error');
)
views.py
class DatabaseManager():
def functionone(): # add new list
if request.method == 'POST':
user = User.objects.get(pk=1)
addlst = List(content = "list content", creator = user)
addlst.save()
def functwo(): # update username
if request.method == 'POST':
user = User.objects.get(pk=1)
user.id = 9
user.save()
def functhree(): # update list content
if request.method == 'POST':
user = User.objects.get(pk=1)
mylist = List.objects.get(pk=1)
mylist.content = "updated list content"
mylist.save()
urls.py
urlpatterns = [
path('ClassManager/functionone()', views.DatabaseManager.functionone),
]
我来自 asp.net 背景,在那里我编写了带有运行查询的函数的类,以及我如何管理我的数据库,所以我可以在这里做同样的事情吗?
提前致谢!
【问题讨论】:
【参考方案1】:您可以使用Class Based View 将您的视图实现为 Python 对象而不是函数,但您不能使用 Ajax 调用类函数。
【讨论】:
基于类的视图只有 8 个我可以使用的特定方法...我无法创建自定义方法,我仍然需要在 urls.py 中为每个方法添加新行。这是你在 django 中编码的方式吗?对于每个视图方法,我需要在 urls.py 中添加新行吗?正如我所说:我是 django 的新手。 tysm 是的!您需要为每个视图添加一个 url 好的,谢谢!最后一个问题,如果我可以的话:你知道只有一个 url 和多个自定义函数来获得相同结果的任何其他方法吗?以上是关于django 使用一个 url 运行自定义视图类方法的主要内容,如果未能解决你的问题,请参考以下文章