学了几天的django。照着官方的教程学了4节。大概对django有了一个大体的了解。
app和project有区别。
What’s the difference between a project and an app? An app is a Web application that does something – e.g., a Weblog system, a database of public records or a simple poll app. A project is a collection of configuration and apps for a particular website. A project can contain multiple apps. An app can be in multiple projects.
application指的是一个网站的应用程序。而project指的是应用程序的集合。它管理着整个网站的运行。
然后我建了一个project叫mysite,按照教程建了一个application叫polls。就是一个简单的投票系统。
默认的app还有用户管理等app。
系统配置都在mysite目录下的setting里。
比如数据库的配置,中间件,模板等。还有你新建的app。
INSTALLED_APP = [
'polls.apps.PollsConfig',
'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles',]
这里列的应用都是默认被开启了。比如admin。
然后看看新建的polls应用。
polls/ __init__.py admin.py apps.py migrations/ __init__.py models.py tests.py views.py
我说说我在练习中使用到的几个文件。
models.py
这是创建数据库对象的文件。
把你需要的数据库模型写在这个文件里。
class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField('date published')
主键会自己创建为自增int型。
具体如下图:
连表名都替你生成了。
怎么生成数据库数据?
这里用的命令是migrate
具体生成什么样的数据模型,
在这个文件里看
polls/migrations/0001_initial.py:
执行命令之前可以这么看
python manage.py sqlmigrate polls 0001
最后执行命令
python manage.py migrate
程序怎么知道polls这个应用呢?
在polls目录下的apps.py里要配置。
migrate这个命令之前好像在ROR里见过。。。
看来这些框架其实都差不多。
然后是view
view主要在应用下的views.py文件里去写。
如果用html怎么办?
在polls下创建template/polls/xxx.html
程序会按照这个路径去找。
那在浏览器里输入localhost:8000/polls/
后台怎么知道请求的是views.py里的哪个函数呢?
在urls.py里。
url()函数就够了。
urlpatterns = [ url(r'^$', views.index, name='index'), ]
url
(regex, view, kwargs=None, name=None)
url()函数传递四个参数,第一个是正则表达式,即url请求路径。
然后是视图,引用views.py中的函数。
后两个参数选填。
kwargs 是对url的补充。如下:
url(r'^blog/(?P[0-9]{4})/$', views.year_archive, { 'foo': 'bar'}),
请求的url就是/blog/2005/,调用views.py的函数为views.year_archive(request, year='2005',foo='bar')
最后一个name可以用来明确模版的名字。
大概学了这么多,其中还有好多不是很明白。还需要继续看看。