使用pycharm开发,新建django项目,命名为mysite
其项目结构如下
- 外层mysite:随意命名,根目录
- Manage.py :与django交互
- 内层mysite
- init:表示该文件为python包
- settings.py是项目整体的配置文件
- urls.py是项目的路由配置文件
- wsgi.py是项目与WSGI协议兼容的Web服务器入口
- asgi.py是项目与ASGI协议兼容的Web服务器入口
保持默认运行。(我用pycharm有个地方运行报错了导入下os包就好,不记得是哪里了)
项目内app区分project和app
一个project可以有很多app来实现不同的功能
执行
python manage.py startapp polls
新建app
- admin.py文件是网站的后台管理站点的配置文件
- apps.py文件是配置当前子应用的相关信息
- migrations是用于存放数据库迁移历史文件
- models.py是用于保存数据库模型类
- tests.py文件是用于开发测试的
- views.py文件是编写Web应用视图函数
视图需要映射到url,在polls下面创建一个urls.py文件
将根url指向polls.urls。
其中 path(<route>, <view>, [name=None,**kwargs])
- route 表示路径,从端口以后的URL地址,到/结束。Route 是一个包含 URL 模式的字符串。当处理一个请求时,Django 从urlpatterns 中的第一个模式开始,沿着列表一路向下,将请求的 URL 与每个模式进行比较,直到找到匹配的模式。
- 当 Django找到一个匹配模式时,它调用指定的视图函数,其中以 HttpRequest 对象作为第一个参数,并将 route 中的任何“捕获”值作为关键字参数
- **kwargs 表示一个字典,该参数没有具体命名,只是字典形式,而且该参数只能在视图函数中读取和使用。
- name 表示的是route匹配到的URL的一个别名
运行结果如下
配置文件数据库
django默认使用sqllite,其他数据库需要在 mysite/settings.py中配置
app配置
INSTALLED_APPS保存在这个 Django 实例中激活的所有 Django 应用程序的名称。默认配置如下
每个模型都由子类 django.db.models 的类表示;
每个字段都由一个 Field 类的实例表示——例如,CharField 表示字符字段,DateTimeField 表示日期时间;
在 INSTALLED _ apps 设置中添加一个对其配置类的引用
运行
python manage.py makemigrations polls
通过运行 makemigrations,您告诉 Django 您已经对您的模型做了一些更改,并且您希望将更改存储为迁移。迁移是 Django 存储对模型(以及数据库模式)的更改的方式——它们是磁盘上的文件。如果愿意,您可以阅读新模型的迁移; 位于polls/migrations/0001 _ initial.py
python manage.py sqlmigrate polls 0001
将sql语言打印到屏幕上,但并不迁移。用来检查
模型更改步骤总结
Change your models (in models.py). Run python manage.py
makemigrations to create migrations for those changes Run python
manage.py migrate to apply those changes to the database.
python manage.py shell --用来测试api
管理员数据库模型关系: https://docs.djangoproject.com/en/3.1/ref/models/relations/
双下划线数据库查找:
https://docs.djangoproject.com/en/3.1/topics/db/queries/#field-lookups-intro
数据库api
https://docs.djangoproject.com/en/3.1/topics/db/queries/
创建管理员
执行
python manage.py createsuperuser
登录http://127.0.0.1:8000/admin进入管理站点
在管理员页面注册应用程序
在我们的投票应用程序中,我们有以下四个视图:
- index:问题“索引”页面-显示最新的几个问题
- detail:问题“详细”页-显示问题文本,没有结果,但表单投票
- results:问题“结果”页面——显示特定问题的结果
- Vote action:投票动作——处理特定问题中特定选项的投票
先简单添加以下视图
连接到polls/url模块
在polls目录中创建templates目录,目录下建polls/index.html,DjangoTemplates 会在每个 INSTALLED _ apps 中寻找“ templates”子目录。
模板位于 polls/templates/polls/index. html。由于 app _ directories 模板加载器的工作方式如上所述,因此可以将 Django 中的这个模板引用为 polls/index. html。
index
或者使用django提供的shortcut
Render ()函数将请求对象作为其第一个参数,模板名作为其第二个参数,字典作为其可选的第三个参数。它返回用给定上下文呈现的给定模板的 HttpResponse 对象。
detail
或者
get_object_or_404函数的第一个参数是 Django 模型,关键字参数是任意数量的,然后传递给模型管理器的 get ()函数。如果对象不存在,它就会引发 Http404。
页面
在{ {question.question _ text }}的例子中,首先 Django 对对象问题进行字典查找,没有的话进行属性查找。
{% for% }用来方法调用question.Choice _ set.all
删除模板中的硬编码 url
创建表单
vote函数
request.POST [‘ choice’]以字符串的形式返回选择的 ID。Post 值总是字符串。
创建模板
{{ choice.votes|pluralize }} 过滤器用法
{{ 列表或数字|pluralize }} 单词的复数形式,如列表字符串个数大于1,返回s,否则返回空串
python manage.py test polls
修改bug
还可以使用django提供的client进行测试,此处略过不提。
界面优化static
在polls目录中创建static目录,目录下建polls/style.css,类似于templates
在 polls/templates/polls/index. html 的顶部添加以下内容:
{% static% }模板标记生成静态文件的绝对 URL。
重启服务器,变绿
资源
在之前建立的static/polls目录下再建立image目录,图片存放在里面
如图
定制admin页面其余相关信息参考
the static files howto
https://docs.djangoproject.com/en/3.1/howto/static-files/ the
staticfiles reference
https://docs.djangoproject.com/en/3.1/ref/contrib/staticfiles/
略过