初学Django笔记

版权声明:转载请标明出处 https://blog.csdn.net/easy_purple/article/details/82899175

记自己在慕课网学习django的学习笔记

网站地址https://www.imooc.com/video/13928

将写好的代码上传到github我是地址

开发环境:

pycharm

python(自己用的3.7)

django(自己用的Django2.1。。命令行 pip install django安装)

总目录:

  • 创建博客项目、应用

  • 编写Template

  • 建立Model,编辑数据库

  • 配置Django自带的后台管理系统Admin

  • 完善博客项目

创建博客项目、应用:

cmd进入命令行

创建(在想要安置项目的目录)

django-admin startproject myblog

然后我们的项目创建成功了,

进入我们的项目

cd myblog

然后打开django自带的服务器

python manage.py runserver

网页打开http://127.0.0.1:8000/就可以看到效果了

创建应用

python manage.py startapp blog

然后我们的应用就创建成功了

进入项目的myblog/setting.py文件,添加配置

在INSTALLED_APPS里,将自己的应用名字写在里边

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'blog',

]

然后创建一个页面:

在pycharm里打开我们的项目,进入views目录

编写代码:

from django.shortcuts import render

from django.http import HttpResponse





def index(request):

return HttpResponse('helllo world!')

在mylog/urls里编写代码

from django.contrib import admin

from django.urls import path

import blog.views as bv



urlpatterns = [

path('admin/', admin.site.urls),

path('index/', bv.index,)

]

然后在浏览器打开http://127.0.0.1:8000/index/就可以看到自己的界面了。

重新配置url:(因为如果在根目录下配置urls,那么将来那么多urls将会很乱,在自己的应用名下新建urls目录,编写代码)

blog/urls里的代码:

from django.urls import path

from . import views



urlpatterns = [

path('index/', views.index)

]

myblog/urls里的代码

from django.contrib import admin

from django.urls import path,include

import blog.views as bv



urlpatterns = [

path('admin/', admin.site.urls),

path('index/', include('blog.urls'))

]

在浏览器输入http://127.0.0.1:8000/index/index/就可以查看自己的页面了

这里,我们将myblog/urls里的index改为blog,

path('blog/', include('blog.urls'))

这样我们在浏览器输入http://127.0.0.1:8000/blog/index/就可以查看自己的页面了

编写Template

在根目录下创建名为template的目录

在该目录下新建一个以自己的app名字为name的目录,在这里我们新建blog目录(因为我们在项目中可能会有很多应用,如果应用里的html名字一样的话引用的时候就会出错误)

在template/blog目录里创建html文档

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

</head>

<body>

hello world

</body>

</html>

重新编写views文件

from django.shortcuts import render

from django.http import HttpResponse





def index(request):

return render(request,'blog/index.html')

这样我们在浏览器输入http://127.0.0.1:8000/blog/index/就可以查看自己的页面了

其中,render方法里边还可以dic传参数,比如这样

重新编写views文件

from django.shortcuts import render

from django.http import HttpResponse





def index(request):

return render(request,'blog/index.html',{'hello':'hello,world'})

然后在html里引用:(用两层大括号,括号里写键明就可以得到键值)

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

</head>

<body>

hello world

<br/>

{{ hello }}

</body>

</html>

建立Model,编辑数据库

编辑blog目录下的models文件

创建类,继承models.Model,这个类就是一张数据表

类里的属性就是数据库里的字段attr=models.CharField()

编辑models如下

from django.db import models





class Article(models.Model):

title = models.CharField(max_length=32, default='title')

content = models.TextField(null=True) # 允许他为空

命令行中进入与manage.py同级目录

执行python manage.py makemigrations 应用名

python manage.py makemigrations blog

然后执行

python manage.py migrate

这样Django会自动在app/migrations/目录下生成移植文件

此时我们可以查看生成的数据库表db.sqlite3(此步骤对整个项目并没有哦太大的影响)

使用SQLite Expert Personal软件打开该文件,我们可以插入数据。

(添加数据后再执行后台和前台的操作,否则你会报错)后台步骤:

views中import models

from django.shortcuts import render

from . import models

from django.http import HttpResponse





def index(request):

article = models.Article.objects.get(pk=1)

return render(request, 'blog/index.html', {'article': article})

前端步骤

模板可以使用对象,以及对象的“.”操作

<body>

<h1>{{article.title}}</h1>

<br/>

<h3>{{article.content}}</h3>

这样我们在浏览器输入http://127.0.0.1:8000/blog/index/就可以查看自己的页面了

配置Django自带的后台管理系统Admin

创建超级用户

命令行中进入与manage.py同级目录

python manage.py createsuperuser

    (然后输入Username,邮箱,密码)

浏览器进入localhost:8000/admin

输入用户名,密码就可以进入了

可是界面是英文的,配置成中文的:

修改settings中的language_code='zh_Hans',这样界面字体编码设置为中文

配置好admin后,如何在后台显示我们的数据呢?

配置应用

    在admin.py中引用models模块(或里边的模型类)

    编辑admin.site.register(models.Article)

from django.contrib import admin



from .models import Article





admin.site.register(Article)

管理界面所有的items的名字都是object,怎样修改?

    在Articles里添加方法(3.7为__str__(self),2.7为__unicode__(self))

    方法返回:return self.title

from django.db import models





class Article(models.Model):

title = models.CharField(max_length=32, default='title')

content = models.TextField(null=True) # 允许他为空



# 将界面里的title设置为title

def __str__(self):

return self.title

完善博客(接下来的是自己的笔记,详细代码请见github

博客页面:

主页面、

    文章标题列表、超链接

    发表博客按钮(超链接)

    思路:

    取出数据库中所有的文章对象

    将文章对象们打包成列表,传递到前端

    前端页面吧文章以标题超链接的形式逐个列出

    代码:

        views里:articles = models.Article.objects.all()

        html文档里:    {% for article in articles%}

                <a href="">{{article.title}}</a>

                <br/>

                {%endfor%}

文章内容页面、

    标题

    文章内容

    修改文章按钮(超链接)

    代码:

        在views里添加方法article_page(request,article_id)    

        新建html文件

        在appName/urls里配置url   django2.0以上需要这样写path('article/<int:article_id>/', views.article_page),

超链接配置:

href后面试目标地址

template中可以用"{%url 'app_name:url_name' param%}"

    (配置url)

        方法1 根urls里,写在include()第二个参数位置,namespace='blog'

        方法2 应用下,在url()的第三个参数位置,name='arrticle'

        主要取决于是否使用include引用了另一个ur配置文件

        注意!** 在appName/urls里最后一行必须加上 app_name='appName'

    app_name

    url_name

    param参数

撰写页面

    标题编辑栏

    文章内容编辑区域

    提交按钮

    代码:

    新建edit.html

    在views里新建edit_page()方法

编写响应函数(新建新的article)

    在views里新建edit_action方法

    使用request.POST['参数名']获取表单数据

    models.Article.objects.create(title,content)创建对象

、    在edit_page.html文档里添加action

    注意!!!**只要涉及到post请求的表单,必须添加代码   {% csrf_token %}

修改数据

    

    article.save

*******************************************************************

小技巧

Templates过滤器

    写在模板中,属于Django模板语言

    可以修改模板中的变量,从而显示不同的内容

怎么使用过滤器?

    {{value|filter}}

    例子:{{list_nunms|length}} 显示list_nums的length

    过滤器可以叠加{{value|filter1|filter2|filter3}}

*******************************************************************

django shell

    他是一个python的交互式命令行程序

    他自动引入了我们的项目环境

    我们可以使用它与我们的项目进行交互

如何使用django shell?

    manage.py shell

有什么用?

    用它来进行一些调试工作

    测试位置的方法

*******************************************************************

admin增强

创建admin配置类

    class ArticleAdmin(admin.ModelAdmin)

    注册:admin.site.register(Article,ArticleAdmin)

显示其他字段

    list_display=('title',''content)

    list_display同时支持tuple和list,不过建议tuple,因为他不可变

添加字段

    在models里直接写需要添加的属性

    数据移植python manage.py makemigrations

        python manage.py migrate

*******************************************************************

过滤器

    list_filter=('pub_time',)

猜你喜欢

转载自blog.csdn.net/easy_purple/article/details/82899175