安装:
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: ...
随机推荐
- XML解析代码
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.LinkedLi ...
- Centos 7.2 双网卡绑定之踩坑
线上服务器,安装centos7.2 x64最小化安装,需要做链路聚合,双网卡绑定.在centos 6.x 和 centos 7上测试都OK,于是直接开搞. 说明下,以下环境是在虚拟机中实现的: 系统: ...
- CentOS6.9下安装 Pika 2.2.5(新增了拷贝安装版本的办法+对于PID的位置及数据库位置的理解)
一.环境准备 yum install -y snappy-devel protobuf-compiler protobuf-devel bzip2-devel zlib-devel bzip2 ...
- 记录一下安卓本地文件File处理的问题
在项目中更新软件下载更新包的时候删除系统文件夹会报错导致下载失败 研究了下是因为目录不存在导致的由于系统自带下载目录,但是一些极限操作当目录不存在时就需要处理下 项目中的解决方案 File f = n ...
- javascript面试题(一)(转载)
1,判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/; /*注意:1.要用 ...
- F - 等式(1/x + 1/y = 1/n)
链接:https://www.nowcoder.com/acm/contest/90/F来源:牛客网 题目描述 给定n,求1/x + 1/y = 1/n (x<=y)的解数.(x.y.n均为正整 ...
- 51nod 子序列的个数(动态规划)
子序列的个数 给定一个正整数序列,序列中元素的个数和元素值大小都不超过105, 求其所有子序列的个数.注意相同的只算一次:例如 {1,2,1}有子序列{1} {2} {1,2} {2,1}和{1,2, ...
- 【C++】const 常引用的用法
用法: const int & a; 定义了一个整型常引用变量a. 特点: 1.不能够通过常引用变量来修改其值,如: const int & a = 10; a = 12;//编译报错 ...
- Maven / Nexus 的用法和经验
Maven / Nexus 的用法和经验
- [CF865C]Gotta Go Fast
题目大意: 一个游戏关卡有$n(n\le50)$个任务,若在$m$秒内按顺序完成所有任务则算作通过当前关卡.每个关卡有三个属性$a_i,b_i,p_i(1\le a_i<b_i\le100,80 ...