安装:
2、pip install Django==1.10.6安装Django
创建项目:
1、打开命令行,进入想要安置项目的目录,django-admin startproject myblog
manage.py:与项目进行交互的命令行工具集的入口;项目管理器;执行python manage.py可以查看所有命令,运行命令:python manage.py runserver(启动服务器,还可后面跟着端口号直接设定端口号,否则会默认8000)
wspi.py英文名(Python Web Server Getway Interface)中文名:Python服务器网关接口;是Python应用与Web服务器之间的接口
urls.py:URL配置文件
setting.py总配置文件 BASE_DIR:项目的根目录
SECRET_KEY:安全码
DEBUG=True/False
ALLOWED_HOSTS=[]里面可以输入允许外界访问的host,例如如果输入localhost,则不可以使用id进行访问
INSTALLED_APPS:已安装的应用,如果我们创建了应用需要手动写到这里面
ROOT_URLCONF:url的根文件
templates:模板的配置
databases:配置数据库,可以打开上面的链接查看如何配置
STATIC_URL:静态文件的地址
__init__.py:声明模块的文件,默认为空
创建应用:
1、打开命令行,进入项目中manage.py同级目录,命令行输入:python manage.py startapp blog
2、将‘blog’添加到INSTALLED_APPS中
应用目录介绍
migrations:数据移植模块,内容自动生成
admin.py:该后台应用管理系统配置
apps.py:该应用的一些配置,Django1.9以后自动生成
models.py:数据模型模块,使用ORM框架
test.py:自动化测试模块
view.py:执行响应的代码所在的模块,代码逻辑处理的主要地点,项目大部分代码都在这里编写
3、编写代码
4、配置urls.py
开发templates
1、在app的根目录下创建名为templates的目录,再建一个文件夹名称与模块名称相同
2、 在该文件夹下创建HTML文件
3、在views.py中返回return render(request, 'blog/index.html')
Models
ORM:对象关系映射
编写models
1、在应用根目录下创建models.py,并引入models模块
2、创建类,继承models.Model,该类即是一张数据表
3、在类中创建字段
如何创建字段:
生成数据表:
1、命令行进入manage.py同级目录
2、执行python manage.py makemigrations app名(可选,如果不写默认生成该项目下的所有应用都生成迁移)
3、再执行python manage.py migrate
查看数据表:
1、Django会自动在app/migrations/目录下生成移植文件
2、执行python manage.py sqlmigrate 应用名 文件id 查看sql语句
页面呈现数据:
后台步骤
1、views.py中import models
2、article=models.Article.objects.get(pk=1)主键为1的数据
3、 render(request,page,{'article':article})
前端步骤
1、模板可以直接使用对象以及对象的“.”操作{{article.title}}
Admin:
配置admin:python manage.py createsuperuser 创建超级用户,回车后设置用户名、邮箱、密码
修改setting.py里的LANGUAGE_CODE = 'zh_Hans'改成中文字体
配置应用
1、在应用下admin.py中引入自身的models模块(或模块中的类)
2、编辑admin.py:admin.site.register(models.Article)
3、修改数据默认显示的名称:在Article类下面添加一个方法,根据python的版本选择(python3):__str__(self)和(python2.7):__unicode__(self),方法里面return self.title
完善博客
博客页面设计:1、博客主页面;2、博客内容页面;3、博客撰写页面
博客主页面:1、文章标题列表,超链接;2、 发表博客按钮(超链接)
实现:views.py修改
def index(request):
articles=models.Artical.objects.all()
return render(request, 'blog/index.html',{'articles':articles})
index.html修改
<body>
<h1><a href="">新文章</a></h1>
{% for article in articles %}
<a href="">{{article.title}}</a>
<br/>
{% endfor %}
</body>
博客文章页面:1、标题;2、内容;3、修改文章按钮
在views.py中添加
def article_page(request, article_id):
article=models.Artical.objects.get(pk=article_id)
return render(request, 'blog/article_page.html', {'article': article})
然后添加模板article_page.xml
最后修改urls.py文件,添加url:url(r'^article/(?P<article_id>[0-9]+)$', views.article_page),其中:url正则中的祖名必须和参数名保持一致
Django模板中的超链接配置
超链接的目标地址:href后面是目标地址,template中可以用“{%url 'app_name:url_name' param%}”其中app_name和url_name都是在url中配置的
再配url:
url函数的名称参数根urls,写在include()的第二个参数位置,namespace='blog'
应用下则写在url()的第三个参数位置,name='article'
主要取决于是否使用include引用了另一个url配置文件
博客撰写界面:标题编辑栏、文章内容编辑区域、提交按钮
编辑响应函数:
使用request.POST['参数名']获取表单数据,models.Article.objects.creat(title,content)创建对象
在form的action中添加设置的URL
涉及POST方法提交表单的,前端页面应该加上:{%csrf_token%},防范跨站请求伪造
修改文章界面
通过article.id是否为0来判断编辑界面是新建还是修改
如果是修改最后需要,article.title=title article.content=content article.save()
templates过滤器
{{value|filter}}
例如:{{list_nums|length}}
过滤器可以叠加{{value|filter1|filter2|filter3|......}}
- Django入门与实践 17-26章总结
Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...
- Django入门项目实践(下)
5.设置应用程序的样式 安装django-bootstrap3. # untitled/untitled/settings.py # ··· INSTALLED_APPS = [ 'django.co ...
- Django入门项目实践(中)
4.用户账户 4.1 让用户能够输入数据 添加新主题 # untitled/learning_logs/forms.py from django import forms from .models i ...
- Django入门项目实践(上)
项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...
- Django入门与实践-第26章:个性化工具(完结)
http://127.0.0.1:8000/boards/1/topics/62/reply/ 我觉得只添加内置的个性化(humanize)包就会很不错. 它包含一组为数据添加“人性化(human t ...
- django入门与实践 - 关于升级到django 3.7,三种模板超链接配置(编辑中)
第一种方法: 在myblog/urls.py模块中: from django.contrib import admin from django.urls import path, include ur ...
- Django入门与实践-第14章:用户注册(完结)
http://127.0.0.1:8000/signup/ django-admin startapp accounts INSTALLED_APPS = [ 'accounts', ] # mypr ...
- Django入门与实践-第13章:表单处理(完结)
http://127.0.0.1:8000/boards/1/ http://127.0.0.1:8000/boards/2/ http://127.0.0.1:8000/boards/3/ http ...
- Django入门与实践-第12章:复用模板(完结)
http://127.0.0.1:8000/http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1 ...
- Django入门与实践-第11章:URL 分发(完结)
http://127.0.0.1:8000http://127.0.0.1:8000/boards/1/http://127.0.0.1:8000/boards/2/http://127.0.0.1: ...
随机推荐
- js中如何对时间进行设置
js中如何对时间进行设置 Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getF ...
- OleDbDataAdapter具体使用11
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- ie_placeholder最佳兼容方案
https://gitee.com/hustcc/placeholder.js巧妙的使用了canvas.toDataURL(),动态生成了一个背景图,可以作为兼容IE9-的placeholder方案. ...
- Win10系统解决C盘分区限制一半的问题
1,按照网上的方法还不行,如链接 2,安装如下软件,里面有激活码,链接 链接:https://pan.baidu.com/s/14ifYpnCMGwJIbgykTYQR6Q 密码:whh3 3,安装并 ...
- ionic3 打包发布,以安卓说明
1 添加图标 ionic cordova resources [<platform>] 官方https://ionicframework.com/docs/cli/cordova/reso ...
- AC日记——Red and Blue Balls codeforces 399b
399B - Red and Blue Balls 思路: 惊讶的发现,所有的蓝球的消除都是独立的: 对于在栈中深度为i的蓝球消除需要2^i次操作: 代码: #include <cstdio&g ...
- 计蒜客 30996.Lpl and Energy-saving Lamps-线段树(区间满足条件最靠左的值) (ACM-ICPC 2018 南京赛区网络预赛 G)
G. Lpl and Energy-saving Lamps 42.07% 1000ms 65536K During tea-drinking, princess, amongst other t ...
- (4)java基础知识
一.注释 java的注释方法主要有三种 1.单行注释 // 2.多行注释 /* 内容 */ 3.文档注释 /** * * */ 这种方法注释用于生成一份API文档,主要说明 方法的功能.参数.返回值 ...
- HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】
诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...
- HDU 2473 Junk-Mail Filter 【并查集删除】
Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...