Django2版本中的一些变化

项目升级Django2后存在一些问题,需要适当调试才运行成功,现总结部分如下:

1. cannot import name RegexUrlResolver

from django.urls import RegexURLResolver, RegexURLPattern

修改为

from django.urls.resolvers import URLResolver, URLPattern

2. init() missing 1 required positional argument: ‘on_delete’

在有外键约束(ForeignKey)的字段添加on_delete参数

class ScoreRecord(models.Model):
    student = models.ForeignKey(verbose_name='学生', to='Student', on_delete=models.CASCADE)
    content = models.TextField(verbose_name='理由')
    score = models.IntegerField(verbose_name='分值', help_text='违纪扣分写负值,表现邮寄加分写正值')
    user = models.ForeignKey(verbose_name='执行人', to='UserInfo', on_delete=models.CASCADE)

3. Specifying a namespace in include() without providing an app_name is not supported

Django 1版本路由使用如下,在Django 2版本有了改动

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^stark/', site.urls),
    url(r'^rbac/', include('rbac.urls',namespace='rbac')),
    url(r'^login/', account.login, name='login'),
    url(r'^logout/', account.logout, name='logout'),
    url(r'^index/', account.index, name='index'),
]

改动后,有两种方案可以使用:

  • 方案一:

直接修改项目的urls.py,修改方式为
url(r’^rbac/’, include((’[urlpatterns]’,’[app_name]’),namespace=’[namespace]’)),

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^stark/', site.urls),
    url(r'^rbac/', include(('rbac.urls','rbac'),namespace='rbac')),
    url(r'^login/', account.login, name='login'),
    url(r'^logout/', account.logout, name='logout'),
    url(r'^index/', account.index, name='index'),
]
  • 方案二:

项目中的urls.py不变动,修改应用的urls.py,在urlpatterns前面添加app_name

app_name='rbac'
urlpatterns = [
    url(r'^role/list/$', role.role_list, name='role_list'),  # rbac:role_list
    url(r'^role/add/$', role.role_add, name='role_add'),  # rbac:role_add
    url(r'^role/edit/(?P<pk>\d+)/$', role.role_edit, name='role_edit'),  # rbac:role_edit
    url(r'^role/del/(?P<pk>\d+)/$', role.role_del, name='role_del'),  # rbac:role_del
]
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值