安装:
1、https://www.djangoproject.com/查找最新版本
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、在类中创建字段
如何创建字段:
字段即类里面的属性(变量):attr=models.CharField(max_length=64,title='title') 字段以及字段的可选参数可以参考https://docs.djangoproject.com/en/1.10/ref/models/fields/
生成数据表:
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入门与实践的更多相关文章

  1. Django入门与实践 17-26章总结

    Django入门与实践-第17章:保护视图 Django 有一个内置的视图装饰器 来避免它被未登录的用户访问: 现在如果用户没有登录,将被重定向到登录页面: 现在尝试登录,登录成功后,应用程序会跳转到 ...

  2. Django入门项目实践(下)

    5.设置应用程序的样式 安装django-bootstrap3. # untitled/untitled/settings.py # ··· INSTALLED_APPS = [ 'django.co ...

  3. Django入门项目实践(中)

    4.用户账户 4.1 让用户能够输入数据 添加新主题 # untitled/learning_logs/forms.py from django import forms from .models i ...

  4. Django入门项目实践(上)

    项目结构 1.建立项目 File -->> New Project... 第一个Location是项目所在的目录,第二个Location是项目独立的Python运行环境,我们称之为Virt ...

  5. Django入门与实践-第26章:个性化工具(完结)

    http://127.0.0.1:8000/boards/1/topics/62/reply/ 我觉得只添加内置的个性化(humanize)包就会很不错. 它包含一组为数据添加“人性化(human t ...

  6. django入门与实践 - 关于升级到django 3.7,三种模板超链接配置(编辑中)

    第一种方法: 在myblog/urls.py模块中: from django.contrib import admin from django.urls import path, include ur ...

  7. Django入门与实践-第14章:用户注册(完结)

    http://127.0.0.1:8000/signup/ django-admin startapp accounts INSTALLED_APPS = [ 'accounts', ] # mypr ...

  8. 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 ...

  9. 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 ...

  10. 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: ...

随机推荐

  1. js中如何对时间进行设置

    js中如何对时间进行设置 Js获取当前日期时间及其它操作var myDate = new Date();myDate.getYear();        //获取当前年份(2位)myDate.getF ...

  2. OleDbDataAdapter具体使用11

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  3. ie_placeholder最佳兼容方案

    https://gitee.com/hustcc/placeholder.js巧妙的使用了canvas.toDataURL(),动态生成了一个背景图,可以作为兼容IE9-的placeholder方案. ...

  4. Win10系统解决C盘分区限制一半的问题

    1,按照网上的方法还不行,如链接 2,安装如下软件,里面有激活码,链接 链接:https://pan.baidu.com/s/14ifYpnCMGwJIbgykTYQR6Q 密码:whh3 3,安装并 ...

  5. ionic3 打包发布,以安卓说明

    1 添加图标 ionic cordova resources [<platform>] 官方https://ionicframework.com/docs/cli/cordova/reso ...

  6. AC日记——Red and Blue Balls codeforces 399b

    399B - Red and Blue Balls 思路: 惊讶的发现,所有的蓝球的消除都是独立的: 对于在栈中深度为i的蓝球消除需要2^i次操作: 代码: #include <cstdio&g ...

  7. 计蒜客 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 ...

  8. (4)java基础知识

    一.注释 java的注释方法主要有三种 1.单行注释 // 2.多行注释 /*  内容 */ 3.文档注释 /** * * */ 这种方法注释用于生成一份API文档,主要说明 方法的功能.参数.返回值 ...

  9. HDU 1180 诡异的楼梯【BFS/楼梯随时间变化】

    诡异的楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submis ...

  10. HDU 2473 Junk-Mail Filter 【并查集删除】

    Junk-Mail Filter Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...