2

私はJavaHibernateとSymfony2のバックグラウンドを持っており、コントローラー内で次のような関数の上部にルーティングを記述していました。

/**
 * @Route("/blog")
 */
class PostController extends Controller
{

Djangoでは利用できないことは知っていますが、次のようなURLに言及できるように、デコレータなどをコーディングする方法はありますか。

@URL("/mytest")
class myView():
    pass
4

1 に答える 1

3

それは非常に非難的ですが、次のようなことを試すことができます:

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を処理する前に、このデコレータを含むすべてのファイルがインポートされていることを確認してください(たとえば、URLファイルにインポートすることによって)。

于 2012-11-30T03:20:58.023 に答える