Python编程从入门到实践项目3——Web应用程序——Django入门填坑

《Python编程从入门到实践》是一本非常浅显易懂的Python入门书,对于没有接触过任何编程的人来说,是个不错的开始。

书中的实践部分给出了三个项目,都挺不错的,介绍下:

项目一,外星人入侵。一个小游戏设计,虽然很低级,但如果能跟着坐下来,初学者还是能接触到一些项目的内容,至少自己做出个小程序的成就感是有的。

项目二,数据可视化。强烈推荐必学的东西。学python的朋友应该都知道,python之所以能够大放异彩,与其强大的数据能力是分不开的。数据可视化正是数据处理中很重要的一个环节。好好学这一章,绝对不亏。

项目三,Web应用程序-Django入门。开发一个类似博客的小型网站,虽然可以跟着做下来,但是想真正理解,还是需要很多WEB的基础。

书中的大部分内容,都非常直观易懂,读者只需要跟着看,跟着练,不会有太大问题。

但是项目三例外,由于Django版本的更新(主要是2.0以前的版本和2.0以后版本的区别),导致URL接口的改变,无形中给初学者埋了很多坑。前几天,小编刚刚用Django 2.1把这个项目做了一遍,花了几天时间填坑,现在把书中的坑都一一罗列出来。

  1. 定义模型中,models的外键方法ForeighKey()参数改变。书中为topic=models.ForeignKey(Topic),在Django2.0以后的版本中会报错,应改为 topic=models.ForeignKey(Topic,on_delete=models.CASAD)
  2. 映射URL部分变化很大。django.conf.urls中的url方法统一改为了django.urls下的path方法。同时匹配方式也发生了改变。具体来说:
    1. learning_log中的urls.py添加语句为:path('',include('learning_logs.urls')) 而不是书中的url(r'',include('learning_logs.urls',namespace='learning_logs')),对于users应用的添加,是path('users./',include('users.urls'))而不是书中所写的方式
      urlpatterns = [
          path('admin/', admin.site.urls),
          path('users/',include('users.urls')),
          path('',include('learning_logs.urls')),
      ]
    2. learning_logs中的urls.py添加语句如下,同时注意,由于命名空间定义方式的改变,需要在urlpatterns=[]语句前,需要加入语句app_name='learning_logs'来定义命名空间。
      app_name='learning_logs'
      
      urlpatterns = [
          path('',views.index, name='index'),
          path('topics/',views.topics,name='topics'),
          path('topic/<int:topic_id>/',views.topic,name='topic'),
          path('new_topic/',views.new_topic,name='new_topic'),
          path('new_entry/<int:topic_id>/',views.new_entry,name='new_entry'),
          path('edit_entry/<int:entry_id>/',views.edit_entry,name='edit_entry')
      ]
      
    3. 在后面创建users的应用时,URL映射也是用同样方式改变:
      app_name='users'
      
      urlpatterns = [
          #登录页面
          path('login/',login,{'template_name':'users/login.html'},name='login'),
          #注销
          path('logout/',views.logout_view,name='logout'),
          path('register/',views.register, name='register'),
      ]
  3. 其他地方没有什么问题,只是跟着写的时候一定要小心。最好是在IDE工具里写,这样会有错误提示。learning_log和learning_logs,user和users,  buttons和button都非常容易混淆。 另外,Django官网有个很不错的指导项目,跟着做下来能学不少东西,也能帮助理解。毕竟模仿不是重点,理解才是关键。

猜你喜欢

转载自blog.csdn.net/illikang/article/details/82861919