django 学习笔记

参考:https://mp.weixin.qq.com/mp/homepage?__biz=MjM5MzgyODQxMQ==&hid=13&sn=554298cacaa3fab234ce8c5bd24f49d8&scene=25#wechat_redirect

应用程序模型的当前状态 : python manage.py makemigrations

将我们生成的迁移文件应用到数据库: python manage.py migrate

跳转到manage.py文件所在的目录并执行以下命令:django-admin startapp boards

  • migrations/:在这个文件夹里,Django会存储一些文件以跟踪你在models.py文件中创建的变更,用来保持数据库和models.py的同步。

  • admin.py:这个文件为一个django内置的应用程序Django Admin的配置文件。

  • apps.py:这是应用程序本身的配置文件。

  • models.py:这里是我们定义Web应用程序数据实例的地方。models会由Django自动转换为数据库表。

  • tests.py:这个文件用来写当前应用程序的单元测试。

  • views.py:这是我们处理Web应用程序请求(request)/响应(resopnse)周期的文件。

可以使用manage.py 工具加载我们的项目来启动 Python shell :python manage.py shell
项目将被添加到sys.path并加载Django。这意味着我们可以在项目中导入我们的模型和其他资源并使用它。

将其余的字段当做Python属性访问


board = Board(name='Django', description='This is a board about Django.')
board.save()

创建一个新的Board对象:
board = Board.objects.create(name='Python', description='General discussion about Python.')

列出数据库中所有现有的版块:
boards_list = Board.objects.all()
for board in boards_list:
print(board.description)

查询数据库并返回单个对象: 若返回多条结果或没有结果,则get会抛异常
django_board = Board.objects.get(id=1) # Board.objects.get(name='Django')
django_board.name

 urlpatterns 中的顺序很重要,因为 Django 一旦找到匹配就会停止往后搜索。如果 Django 在 URLconf 中没有找到匹配项,他会通过 Page Not Found 的错误处理代码抛出一个 404 异常

 正则表达式 (?P<pk>d+),这是告诉 Django 将捕获到的值放入名为 pk 的关键字参数中

def board_topics(request, pk): 使用了 (?P<pk>d+) 正则表达式,在 board_topics函数中,关键字参数必须命名为 pk

如果你想在视图函数使用任意名字的参数,那么可以这样定义:url(r'^boards/(d+)/$', views.board_topics, name='board_topics')

def board_topics(request, board_id) 或 def board_topics(request, id)

==========

技巧部分是正则表达式。我准备了一个最常用的 URL patterns 的列表。当你需要一个特定的 URL 时你可以参考这个列表。

主键 自增字段 
正则表达式 (?P<pk>d+)
举例 url(r'^questions/(?P<pk>d+)/$', views.question, name='question')
有效 URL /questions/934/
捕获数据 {'pk': '934'}

Slug 字段 
正则表达式 (?P<slug>[-w]+)
举例 url(r'^posts/(?P<slug>[-w]+)/$', views.post, name='post')
有效 URL /posts/hello-world/
捕获数据 {'slug': 'hello-world'}

有主键的 Slug 字段 
正则表达式 (?P<slug>[-w]+)-(?P<pk>d+)
举例 url(r'^blog/(?P<slug>[-w]+)-(?P<pk>d+)/$', views.blog_post, name='blog_post')
有效 URL /blog/hello-world-159/
捕获数据 {'slug': 'hello-world', 'pk': '159'}

Django 用户名 
正则表达式 (?P<username>[w.@+-]+)
举例 url(r'^profile/(?P<username>[w.@+-]+)/$', views.user_profile, name='user_profile')
有效 URL /profile/vitorfs/
捕获数据 {'username': 'vitorfs'}

Year 
正则表达式 (?P<year>[0-9]{4})
举例 url(r'^articles/(?P<year>[0-9]{4})/$', views.year_archive, name='year')
有效 URL /articles/2016/
捕获数据 {'year': '2016'}

Year / Month 
正则表达式 (?P<year>[0-9]{4})/(?P<month>[0-9]{2})
举例 url(r'^articles/(?P<year>[0-9]{4})/(?P<month>[0-9]{2})/$', views.month_archive, name='month')
有效 URL /articles/2016/01/
捕获数据 {'year': '2016', 'month': '01'}

你可以在这篇文章中看到更多关于正则表达式匹配的细节:https://simpleisbetterthancomplex.com/references/2016/10/10/url-patterns.html

 =======ORM操作数据库:https://www.bilibili.com/read/cv4136105/

士大夫

原文地址:https://www.cnblogs.com/testzcy/p/13079870.html