安装:
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. python-自定义分页组件

    使用方法 """ 自定义分页组件的使用方法: pager_obj = Pagination(request.GET.get('page',1),len(HOST_LIST ...

  2. linux C 中的volatile使用【转】

    转自:http://blog.csdn.net/sukhoi27smk/article/details/38020583 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器 ...

  3. picker鼠标上下拖动选择内容

    上次写这个的时候的博客:http://hiuman.iteye.com/blog/2324929 上次是网上搜的,这次是自己写的. 无论多少个input都可以点击-但是只有一种内容(弹出的内容),可以 ...

  4. springmvc Converter

    以下,来自于Springmvc指南第二版,第93页. Spring的Converter是可以将一种类型转为另一种类型. 例如用户输入的date类型可能有多种格式. 比如:在controller中接收一 ...

  5. 安装并启用rabbitmq服务器

    1.确保Erlang已经安装 2.安装rabbitmq服务器 [root@bogon yum.repos.d]# rpm --import https://dl.bintray.com/rabbitm ...

  6. 查询oracle数据库中当前数据库所有表的名称

    http://www.cnblogs.com/hyq0002013/p/5948419.html select t.table_name from user_tables t;

  7. 关于因各种原因,造成LINUX主机不能通过域名访问自己的解决办法

    因路由黑洞或其它原因造成自己域名或外网IP的解决办法: vi /etc/hosts 添加一行: 10.28.86.250 www.edusoa.com 保存退出.

  8. jQuery验证控件jquery.validate.js使用说明+中文API(转)

    一导入js库<script src="../js/jquery.js" type="text/javascript"></script> ...

  9. HDU 1811 Rank of Tetris 【拓扑排序 + 并查集】

    自从Lele开发了Rating系统,他的Tetris事业更是如虎添翼,不久他遍把这个游戏推向了全球. 为了更好的符合那些爱好者的喜好,Lele又想了一个新点子:他将制作一个全球Tetris高手排行榜, ...

  10. ASP.NET Core 2.2 基础知识(五) 环境

    一.环境变量 系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如: 新 ...