我们的基本网址为so.com
因此,如果URL以abc开头,例如
so.com/abc/
so.com/abc/123
so.com/abc?newtab=123
so.com/abc#123
so.com/abc/123?tab=new
...
然后,所有这些URL模式都应该转到Class Abc
myapp/urls.py
...
url(r'^abc[a-zA-Z0-9=#_\?\-/]+$',views.Abc.as_view(),name='abc')
的myapp / myviews / abc.py
class Abc(View):
def get(self,request):
...
def foo(user_id):
...
def bar(post_id):
...
在函数get(self,request):
中如何在请求的abc之后获取所有内容。
e.g。
so.com/abc/xyz => /xyz
so.com/abc#123 => 123
so.com/abc?tab=new => ?tab=new
so.com/abc/123?tab=new => tab = new and 123
在abc之后添加#123
时,它会自动转换为abc/#123
如何开展这项工作?
我见过很多问题,但没有帮助。
How to get the current URL within a Django template?
...
答案 0 :(得分:1)
首先,您无法获得#
参数。这不会发送到服务器,请阅读更多here
解析so.com/abc/xyz => /xyz
和so.com/abc?tab=new => ?tab=new
url(r'^abc/?$',views.Abc.as_view(),name='abc')
url(r'^abc/(?P<param>\w+)/?$',views.Abc.as_view(),name='abc')
class Abc(View):
def get(self,request,param=None):
print param # in param you get /xyz
tab = request.GET["tab"] # here you get ?tab=new