Django正则表达式URL模式覆盖其他URL

Django正则表达式URL模式覆盖其他URL,django,django-templates,django-views,Django,Django Templates,Django Views,我正在从事一个项目,该项目需要显示通过url请求的城市数据,如example.com/city1获取城市信息等 我在我的应用程序中使用了以下url模式和视图。这一观点很有效 urlr'^?p[-\w]+$',views.cityindex,name='cityindex' 但当我尝试打开其他URL(如/admin)或其他应用程序的URL时,它会被重定向到我的cityindex视图,然后再重定向到404页面,正如上面我的视图所处理的那样 下面是我在主url.py文件中使用的url模式 urlr“^

我正在从事一个项目,该项目需要显示通过url请求的城市数据,如example.com/city1获取城市信息等

我在我的应用程序中使用了以下url模式和视图。这一观点很有效

urlr'^?p[-\w]+$',views.cityindex,name='cityindex'

但当我尝试打开其他URL(如/admin)或其他应用程序的URL时,它会被重定向到我的cityindex视图,然后再重定向到404页面,正如上面我的视图所处理的那样

下面是我在主url.py文件中使用的url模式

urlr“^”,包括“main.url”, urlr“^admin/”,admin.site.url, urlr“^login\u redirect/”,包括“loginapp.url”

我目前正在使用Django 1.11.12。有没有办法阻止此url重写

编辑: mymain.url文件中的URL

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'),

要实现这一点,请像这样思考sceanarios

1- www.example.com/cityname/  
2- www.example.com/about/Us/
3- www.example.com/others/terms/ 
4- www.example.com/others/privacy/
def cityindex(request, cityname):
    data = cityname
    #you can do anything you want here
    return HttpResponse(data)
任何时候,您都可以使用其他url,如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


    ]
注意:cityname可以是一个数字,因此您可以决定将其用作城市id,但是,如果您更喜欢使用cityid,请确保在视图中将其转换为整数


我希望这有帮助

您可以通过添加$like`urlr'^admin/$,admin.site.url,`@ShafikurRahman不工作来重试。找不到关键字参数“{'app_label':'main'}”的'app_list'的/admin/Reverse处的NoReverseMatch。尝试了1种模式:[u'admin/$?Pmain | auth | error_report/$”]请对此进行研究。可能与url正则表达式有关problem@SunilTatipellyurl声明顺序很重要,请将您的自定义正则表达式url放在底部。您应该显示main.url的内容。嘿,Akinniyi,谢谢您的回答。我已经尝试过了,但我的客户要求它只能是/cityid或/cityname,类似于instagram用户配置文件url,即/username。我想也许在我的cityindex函数中,当城市不存在时,我不应该直接将它重定向到404页面,我应该让它检查主页中的其他URL。你知道任何类似的解决方法吗?我已经更新了我的答案以符合你所说的,请检查并反馈给我
def cityindex(request, cityname):
    data = cityname
    #you can do anything you want here
    return HttpResponse(data)