当前位置: 首页 > news >正文

djang2.0文档-概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

地址:
https://docs.djangoproject.com/en/2.0/intro/overview/

设计模型,可以通过模型做增删改查,而不用面向数据库

列:

from django.db import models

class Reporter(models.Model):
    full_name = models.CharField(max_length=70)

    def __str__(self):
        return self.full_name

class Article(models.Model):
    pub_date = models.DateField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline
python manage.py migrate

migrate 能根据模型在数据中创建不存在的表。
于是就能愉快的使用api来操作数据库。

1,获取所有对象:

Reporter.objects.all()

2,创建对象 后会自己生成id号

r = Reporter(full_name='John Smith')
r.save()
# Now it has an ID.
>>> r.id
1

3,查询单个对象,通过id或者匹配内容

>>> Reporter.objects.get(id=1)
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__startswith='John')
<Reporter: John Smith>
>>> Reporter.objects.get(full_name__contains='mith')
<Reporter: John Smith>
>>> Reporter.objects.get(id=2)
Traceback (most recent call last):
    ...
DoesNotExist: Reporter matching query does not exist.

3,创建关联对象

>>> from datetime import date
>>> a = Article(pub_date=date.today(), headline='Django is cool',
...     content='Yeah.', reporter=r)
>>> a.save()

4,查关联对象

>>> r = a.reporter
>>> r.full_name
'John Smith'

5,通过类方法,查询

>>> Article.objects.filter(reporter__full_name__startswith='John')
<QuerySet [<Article: Django is cool>]>

6,删除对象

# Delete an object with delete().
>>> r.delete()

 

7,通过在admin内容管理注册你的模型,便可在admin页面里面管理模型对应数据的增删改查,方法如下。这里的设计理论是为了做简单管理内容。django 快速开发内容管理后台就是用到这里,非常快捷方便的实现用户,内容管理。

mysite/news/admin.py

from . import models

admin.site.register(models.Article)

8,url地址对应关系设置

mysite/news/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('articles/<int:year>/', views.year_archive),
    path('articles/<int:year>/<int:month>/', views.month_archive),
    path('articles/<int:year>/<int:month>/<int:pk>/', views.article_detail),
]

For example, if a user requested the URL “/articles/2005/05/39323/”, Django would call the functionnews.views.article_detail(request, year=2005, month=5, pk=39323).

9,编写view 对应方法,返回一个response或者http404,这里使用了模板

mysite/news/views.py

from django.shortcuts import render

from .models import Article

def year_archive(request, year):
    a_list = Article.objects.filter(pub_date__year=year)
    context = {'year': year, 'article_list': a_list}
    return render(request, 'news/year_archive.html', context)

 

10,设计模板,需要在setting列出模板的路径dirs的列表,一个没找到会在下一个里面寻找。

mysite/news/templates/news/year_archive.html

加载基础html,对象循环

mysite/news/templates/news/year_archive.html

{% extends "base.html" %}

{% block title %}Articles for {{ year }}{% endblock %}

{% block content %}
<h1>Articles for {{ year }}</h1>

{% for article in article_list %}
    <p>{{ article.headline }}</p>
    <p>By {{ article.reporter.full_name }}</p>
    <p>Published {{ article.pub_date|date:"F j, Y" }}</p>
{% endfor %}
{% endblock %}

{{ article.pub_date|date:"F j, Y" }} uses a Unix-style “pipe” (the “|” character). This is called a template filter, and it’s a way to filter the value of a variable. In this case, the date filter formats a Python datetime object in the given format,模组里面的filter

mysite/templates/base.html

{% load static %}
<html>
<head>
    <title>{% block title %}{% endblock %}</title>
</head>
<body>
    <img src="{% static "images/sitelogo.png" %}" alt="Logo" />
    {% block content %}{% endblock %}
</body>
</html>

base.html里面里面是一些通用的元素

 

其他特征:

1,缓存框架的后台

2,一个联合框架,使得创建RSS和Atom提要和编写一个小Python类一样容易。

 

 

 

 

 

 

 

转载于:https://my.oschina.net/u/2367514/blog/1608648

相关文章:

  • 十步直通深度学习
  • Spider_Man_3 の selenium
  • 前台页面
  • 从零开始写项目第十一篇【个人备忘录】
  • lmdb
  • Mysql主从复制以及常见错误问题分析
  • java基础-集合
  • log4js日志配置问题
  • npx命令介绍
  • 一个Linux青蛙的痛苦挣扎……
  • StackExchange.Redis使用配置
  • CentOS经常使用文件操作命令[百度博客搬家]
  • telegraf+influxdb+grafana开源监控架构
  • Linux日常运维--5
  • 倒序切片
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • extjs4学习之配置
  • Flannel解读
  • Git学习与使用心得(1)—— 初始化
  • HTTP请求重发
  • Java深入 - 深入理解Java集合
  • Js基础知识(一) - 变量
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • 从0到1:PostCSS 插件开发最佳实践
  • 观察者模式实现非直接耦合
  • 力扣(LeetCode)21
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 数据科学 第 3 章 11 字符串处理
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 我与Jetbrains的这些年
  • 一个JAVA程序员成长之路分享
  • 云大使推广中的常见热门问题
  • puppet连载22:define用法
  • 组复制官方翻译九、Group Replication Technical Details
  • ​什么是bug?bug的源头在哪里?
  • #{} 和 ${}区别
  • ()、[]、{}、(())、[[]]命令替换
  • (function(){})()的分步解析
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (二)JAVA使用POI操作excel
  • (二)linux使用docker容器运行mysql
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM疫情居家隔离服务系统
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转) 深度模型优化性能 调参
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .describe() python_Python-Win32com-Excel
  • .form文件_一篇文章学会文件上传
  • .gitignore文件---让git自动忽略指定文件
  • .NET 材料检测系统崩溃分析