django print提到了url

时间:2014-05-29 09:44:49

标签: django django-views

在下面的代码中我怎么知道有两个超链接指向同一个视图。我的问题在于如何知道用户指的是哪个链接?如何在视图中获取引用的url上下文

JS:

window.location = "/project/server/fserver";
window.location = "/project/server/";

网址:

url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^fserver/$', views.IndexView.as_view(), name='index'),

视图

class IndexView(tables.DataTableView, VolumeTableMixIn):
    table_class = project_tables.VolumesTable
    template_name = 'project/server/index.html'

    def get_data(self):
        print "In get data==============="
        ....... 

2 个答案:

答案 0 :(得分:0)

https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpRequest.path

def get_data(self):
    print self.request.path

...您也可以使用单个网址模式执行此操作

url(r'^(?:fserver/)?$', views.IndexView.as_view(), name='index'),

或作为传递给视图的kwarg捕获:

url(r'^((?P<page>fserver)/)?$', views.IndexView.as_view(), name='index'),

答案 1 :(得分:0)

备用方式是:

- &GT;在视图中添加一个类变量以存储URL名称:

class IndexView(tables.DataTableView, VolumeTableMixIn):
   view_url_name = 'index'
   ........

- &GT;将URL定义更改为以下内容:

url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^fserver/$', views.IndexView.as_view(view_url_name='index_fserver'), name='index_fserver'),

此外,这将帮助您以更多django-ish方式获取网址,例如reverse(view_url_name)

注意:两个不同的网址永远不应该是同一个名称,因为这会产生歧义&amp;毕竟Django将挑选所有第一个匹配的名称,因此它也没用。