- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。
想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。
5年前关闭。
锁定。这个问题及其答案是locked因为这个问题是题外话,但具有历史意义。它目前不接受新的答案或互动。
我真的很想构建一个 Web 应用程序;一些简单的东西,例如神奇宝贝卡片的数据库?
我听说过关于 Django 的好消息。最好的起点是哪里?
最佳答案
这是我在博客上发表的一篇文章,几乎回答了 exactly same question .它包含了这里已经给出的许多答案,以及一些额外的建议,其中一些是我的个人意见,其他的可能与我不同。希望有人觉得它有用:
build 东西
我能给出的最好建议是从构建一些东西开始。 Django 的典型“Hello world”是博客网站,我也建议从该网站开始。 Django 框架试图让常见的任务变得非常简单和简单,一个具有简单博客功能的网站就是一个典型的例子。一个流利的 Djangonaut 可以使用所有可用的库在不到一个小时的时间内编写一个简单的博客网站,因此这是一个很好的开始并了解 Django 如何做事的地方。
姜戈书
当然,在您可以直接开始编码之前,您需要使用 Django 启动并运行您的系统,并学习基础知识。一个很好的资源是 Django Book .作者有一段时间没有研究它或保持最新状态(由于其年轻的性质,Django 变化非常频繁),但它可以在线免费获得并强烈推荐。阅读关于如何设置系统、Django 的所有部分如何组合到 MVC 模型中的前几章,你会惊讶于 Django 是如何做事如此简单以至于其他框架变得毫无意义的令人厌烦的。
Django 教程和文档
Django website上有很多很棒的教程,一旦你掌握了 Django 的基础知识,你就几乎不需要别的了。文档也很棒,自己去看看。
选择一个 Django 版本
对于初学者来说,选择一个 Django 版本并坚持使用是个好主意。在撰写本文时,大多数人使用两个主要版本,Django 1.2 和 Django 1.3,以及开发版本(Django 开发人员在作为主要版本发布之前工作和测试更改的版本) )。刚开始时不要使用开发版本——你一定会遇到麻烦。
重要的是 Django 已经存在了大约四五年了,你会发现很多分散在 Google 上的教程都是针对 Django 1.0 和 1.1 的。这很好,而且大部分都不是问题,但是 Django 从那时起添加了相当多的功能,这使得大多数教程和代码片段都过时了。在可能的情况下,尝试坚持针对您的版本的教程。
一旦你选择了一个版本,确保你总是阅读正确版本的 Django documentation .您将在右侧边栏和您所在页面的 url 中看到,您可以更改正在查看的版本。 Django 的文档确实非常出色,远远超出了其他任何内容,作者非常小心地特别说明了该版本中哪些函数是新的,哪些函数在以后的版本中已弃用。只要确保您意识到这一点,就不会浪费无数小时试图使您的版本中不可用的东西工作。
知道 DRY 是什么意思,并实践它
DRY:“不要重复自己”是 Django 背后的核心原则之一。如果您发现自己在 Django 中复制粘贴任何内容,几乎肯定有更好的方法来做到这一点。大多数程序员会从经验中知道为什么这样的重复是不好的,但简而言之,如果您的代码中的某些内容稍后需要更改,或者您在某处犯了错误,则只需在一个地方更改即可。这很有用,因为如果需要更改的地方不止一个,而您忘记了那个实例,则会在代码中引入错误和错误。
远离基于类的 View
Django 1.3 的新增功能是一整套基于类的通用 View 。如果您不知道这意味着什么,请不要担心。绝大多数关于 Django 的教程和书籍都没有提及它,主要是因为它太新了。这是一个功能,旨在减少创建 View 的重复,从而遵循 DRY 原则。虽然它在某种程度上确实做到了这一点,但它也引入了许多黑魔法,并且需要经常在 Django 源代码中进行检查以查看发生了什么。对于初学者来说,这不太理想。此外,现在为基于类的 View 提供的错误消息通常会指向完全错误的方向。远离它们,而是在开始时使用功能 View ,正如大多数教程会告诉您的那样。当您更习惯 Django 并且发现功能 View 的重复令人沮丧时,请查看基于类的通用 View 。
不要开始在 Google App Engine 上托管
虽然 GAE 是免费的并且非常适合可扩展的 Django 应用程序,但它也对您的登录过程引入了很多限制,而且相关文档极其稀缺。作为初学者,不要从那条路线开始,因为很多正常的 Django 文档会突然不适用,你将不知道该怎么做。相反,从 epio 之类的服务开始, gondor.io , 或 many others . Epio 仍处于测试阶段,但也有免费托管选项(每月最多使用一定数量)。由两个 Django 核心开发人员开发,我强烈建议使用它们 - 它可与 Heroku for Ruby on Rails 相媲美。 Ep.io 即将倒闭,但 Heroku最近还加了一个 Python hosting option .
使用 StackOverflow,提问
我的最后一条建议是在遇到问题时随时使用 StackOverflow。首先,他们几乎可以回答您梦寐以求的任何问题。如果您在网站上找不到它,找到问题答案的一个好方法是将“stackoverflow”作为 google 搜索词的一部分附加。否则,发布一个问题,让 Django 社区帮助你。在过去的几年里,它被证明是我学习 Django 阴暗面的最大资源,除了亲自阅读 Django 代码(你也应该这样做!)。祝你好运,享受!
关于python - 开始学习 Django 的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4048973/
我一直在阅读有关汇编函数的内容,但对于是使用进入和退出还是仅使用调用/返回指令来快速执行,我感到很困惑。一种方式快而另一种方式更小吗?例如,在不内联函数的情况下,在汇编中执行此操作的最快(stdcal
我正在处理一个元组列表,如下所示: res = [('stori', 'JJ'), ('man', 'NN'), ('unnatur', 'JJ'), ('feel', 'NN'), ('pig',
最近我一直在做很多网络或 IO 绑定(bind)操作,使用线程有助于加快代码速度。我注意到我一直在一遍又一遍地编写这样的代码: threads = [] for machine, user, data
假设我有一个名为 user_stats 的资源,其中包含用户拥有的帖子、评论、喜欢和关注者的数量。是否有一种 RESTful 方式只询问该统计数据的一部分(即,对于 user_stats/3,请告诉我
我有一个简单的 api,它的工作原理是这样的: 用户创建一个请求 ( POST /requests ) 另一个用户检索所有请求 ( GET /requests ) 然后向请求添加报价 ( POST /
考虑以下 CDK Python 中的示例(对于这个问题,不需要 AWS 知识,这应该对基本上任何构建器模式都有效,我只是在这个示例中使用 CDK,因为我使用这个库遇到了这个问题。): from aws
Scala 中管理对象池的首选方法是什么? 我需要单线程创建和删除大规模对象(不需要同步)。在 C++ 中,我使用了静态对象数组。 在 Scala 中处理它的惯用和有效方法是什么? 最佳答案 我会把它
我有一个带有一些内置方法的类。这是该类的抽象示例: class Foo: def __init__(self): self.a = 0 self.b = 0
返回和检查方法执行的 Pythonic 方式 我目前在 python 代码中使用 golang 编码风格,决定移动 pythonic 方式 例子: import sys from typing imp
我正在开发一个 RESTful API。其中一个 URL 允许调用者通过 id 请求特定人员的记录。 返回该 id 不存在的记录的常规值是什么?服务器是否应该发回一个空对象或者一个 404,或者其他什
我正在使用 pathlib.Path() 检查文件是否存在,并使用 rasterio 将其作为图像打开. filename = pathlib.Path("./my_file-name.tif") 但
我正在寻找一种 Pythonic 方式来从列表和字典创建嵌套字典。以下两个语句产生相同的结果: a = [3, 4] b = {'a': 1, 'b': 2} c = dict(zip(b, a))
我有一个正在操裁剪理设备的脚本。设备有时会发生物理故障,当它发生时,我想重置设备并继续执行脚本。我有这个: while True: do_device_control() device
做组合别名的最pythonic和正确的方法是什么? 这是一个假设的场景: class House: def cleanup(self, arg1, arg2, kwarg1=False):
我正在开发一个小型客户端服务器程序来收集订单。我想以“REST(ful)方式”来做到这一点。 我想做的是: 收集所有订单行(产品和数量)并将完整订单发送到服务器 目前我看到有两种选择: 将每个订单行发
我知道在 Groovy 中您可以使用字符串调用类/对象上的方法。例如: Foo."get"(1) /* or */ String meth = "get" Foo."$meth"(1) 有没有办法
在 ECMAScript6 中,您可以使用扩展运算符来解构这样的对象 const {a, ...rest} = obj; 它将 obj 浅拷贝到 rest,不带属性 a。 有没有一种干净的方法可以在
我有几个函数返回数字或None。我希望我的包装函数返回第一个不是 None 的结果。除了下面的方法之外,还有其他方法吗? def func1(): return None def func2(
假设我想设计一个 REST api 来讨论歌曲、专辑和艺术家(实际上我就是这样做的,就像我之前的 1312414 个人一样)。 歌曲资源始终与其所属专辑相关联。相反,专辑资源与其包含的所有歌曲相关联。
这是我认为必须经常出现的问题,但我一直无法找到一个好的解决方案。假设我有一个函数,它可以作为参数传递一个开放资源(如文件或数据库连接对象),或者需要自己创建一个。如果函数需要自己打开文件,最佳实践通常
我是一名优秀的程序员,十分优秀!