django study 001
问题描述
还是昨天的意见反馈的页面,页面上会列出已有的意见条目,点击条目应该跳转到相应的意见详细页面上,但实际上总是还在原页面上。也就是说,localhost/user/opinion这个页面上点击条目后,应该转入localhost/user/opinion/5/这样的详细意见的页面上。但事实上却没有。
问题解决
问题出在django的url上面。django的url路由使用的是正则表达式,而且路由的匹配时有顺序的,如果前面的匹配了,就不会继续匹配后面的条目,当时的写法是这样的:
urlpatterns = [
...
url(r'^user/opinion/', views.user_opinion, name='opinion'),
url(r'^user/opinion/(?P<opinion_id>\d+)/$', views.user_opinion_detail, name='opinion_detail'),
]
这样,其实^user/opinion/这一条就已经匹配了localhost/user/opinion/5/这种形式的url,而且不会再往下看了。解决方法是进行更精确的匹配。加一个字符串尾的匹配。
urlpatterns = [
...
url(r'^user/opinion/$', views.user_opinion, name='opinion'),
url(r'^user/opinion/(?P<opinion_id>\d+)/$', views.user_opinion_detail, name='opinion_detail'),
]
问题描述
公司最近django的开发要求手写sql,而不用django生成数据库,现在接手一个新项目,也想用sql实现下。
问题解决
django其实也提供了生成sql文件的方法,可以先生成一下,然后在此基础上调整格式,修修改改,比纯手写方便好多,命令为:
python manage.py sqlmigrate <appname> <migratename>
这里migratename为makemigrate生成的文件前面的四位数字。