首页 > 代码库 > django(一)

django(一)

学了几天的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(regexviewkwargs=Nonename=None)

url()函数传递四个参数,第一个是正则表达式,即url请求路径。

然后是视图,引用views.py中的函数。

后两个参数选填。

kwargs 是对url的补充。如下:

url(r‘^blog/(?P<year>[0-9]{4})/$‘, views.year_archive, {‘foo‘: ‘bar‘}),

请求的url就是/blog/2005/,调用views.py的函数为views.year_archive(request, year=‘2005‘,foo=‘bar‘)

最后一个name可以用来明确模版的名字。

大概学了这么多,其中还有好多不是很明白。还需要继续看看。

django(一)