有啥方法可以使用 python 中的注释在 django 中编写 URL
Posted
技术标签:
【中文标题】有啥方法可以使用 python 中的注释在 django 中编写 URL【英文标题】:Is there any way that I can write URL in django using annotations in python有什么方法可以使用 python 中的注释在 django 中编写 URL 【发布时间】:2012-11-18 06:24:30 【问题描述】:我来自 Java Hibernate 和 Symfony2 背景,我曾经在这样的函数顶部的控制器内编写路由:
/**
* @Route("/blog")
*/
class PostController extends Controller
我知道它在 Django 中不可用,但有什么方法可以编写一些装饰器等,以便我可以像这样提及 URL:
@URL("/mytest")
class myView():
pass
【问题讨论】:
你想完成什么? 扩展@Enrico 的评论。您可以以与 Django 几乎相同的方式将 Flask 用作 wsgi 代码,因此部署实际上并没有太大的不同,并且您可以获得您所追求的语法。 【参考方案1】:虽然它会非常不雅,但您可以尝试这样的事情:
project/
decorators.py
views.py
urls.py
# decorators.py
from django.conf import settings
from django.utils.importlib import import_module
from django.conf.urls.defaults import patterns, url
def URL(path):
path = r'^%s$' % path[1:] # Add delimiters and remove opening slash
def decorator(view):
urls = import_module(settings.ROOT_URLCONF)
urls.urlpatterns += patterns('', url(path, view))
return view
return decorator
# views.py
from .decorators import URL
@URL('/')
def home(request):
# your view
@URL('/products')
def products(request):
# your view
# urls.py
from django.conf.urls import patterns
from . import views # import the modules with your views
urlpatterns = patterns('',) # create an empty url dispatcher to append to
并确保在处理 url 之前导入包含此装饰器的每个文件(例如,通过将它们导入 urls 文件中)。
【讨论】:
谢谢哥们,我会试试的。 1.我必须在哪个文件中编写该代码 2.假设我在 view.py 中使用它,我该如何导入它。能给我举个例子吗 edit 反映了这些答案:1. 将此代码写入任何可以导入的文件中,我将其放在decorators.py
2. 像往常一样导入模块,我做了一个相对导入views.py
我收到此错误AttributeError: 'Settings' object has no attribute 'ROOT_URL_CONF'
对不起,应该是ROOT_URLCONF
为什么这被认为是 undjangonic?以上是关于有啥方法可以使用 python 中的注释在 django 中编写 URL的主要内容,如果未能解决你的问题,请参考以下文章
有啥方法可以通过 Python 中的 id 获取对象的大小?