我正在从事一个项目,该项目需要显示有关城市的数据,该数据是通过诸如example.com/city1之类的网址请求的,以获取city1信息等。
我在我的应用中使用了以下网址格式和视图。此视图工作正常。
url(r'^(?P<cityId>[-\w]+)$',views.cityindex,name='cityindex'),
def cityindex(request, cityId):
city = City.objects.filter(url = cityId)
if len(city) == 0:
return redirect('/404')
return HttpResponse('City Data Extracted')
但是,当我尝试打开/admin
之类的其他URL或其他应用程序的URL时,它会被重定向到我的cityindex
视图,然后再重定向到上述视图中处理的404页面。
下面是我在主urls.py文件中使用的网址格式。
url(r'^', include('main.urls')),
url(r'^admin/', admin.site.urls),
url(r'^login_redirect/', include('loginapp.urls')),
我目前正在使用Django 1.11.12。有什么方法可以阻止该网址被覆盖?
编辑: 在我的main.urls文件中提示
url(r'^$',views.index,name='index'),
url(r'^about$', views.aboutpage,name="aboutpage"),
url(r'^terms$', views.termspage,name="termspage"),
url(r'^privacy$', views.privacypage,name="privacypage"),
url(r'^(?P<cityId>[-\w]+)$',views.cityindex,name='cityindex'),
答案 0 :(得分:1)
要实现这一目标,请考虑这样的场景
1- www.example.com/cityname/
2- www.example.com/about/Us/
3- www.example.com/others/terms/
4- www.example.com/others/privacy/
任何时候您想要其他网址,例如www.example.com/faculty/list 您使用第一个数字来获得城市名称时使用 2-4号。
我已经对此进行了测试,可以使用以下格式
urlpatterns = [
url(r'^about/us/$', views.about_page), #about us or any other page
url(r'^(?P<cityname>\w+)/$', views.cityindex), #cityname
]
在我的view.py中,我可以捕捉到这样的城市名称
def cityindex(request, cityname):
data = cityname
#you can do anything you want here
return HttpResponse(data)
注意:城市名称可以是数字,因此您可以决定使用它作为城市ID,但是,如果您更喜欢使用城市ID,请确保在您的视图中将其转换为整数
我希望这对您有帮助