【Django】Day2-Django入门

Django入门

Django入门

一.新建index页面

1.新建项目

使用manage.py创建一个blog这里会出现新的一个应用

python manage.py startapp blog
文件名描述
init.py告诉Python 这是一个包
apps.py在新的Django 版本中新增,用于应用程序的配置。
admin.py映射models 中的数据到Django 自带的admin 后台
models.py数据模型——对应数据库的相关操作
tests.py单元测试
views.py视图函数(即MVC 中的控制器)——控制向前端显示哪些数据。
migrations这是一个包,用于记录models中的数据变更
2.把这个应用加入到Django的项目中

在项目文件的setting.py中。将应用名称(blog)添加到元组的末尾,如下所示。

INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
······
'blog',
)
3.新建一个urls

在项目的urls文件中配置我们blog应用的index页

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',views.archive),
    path('index/',views.index)
]
4.编写对应的index函数

在blog应用的view文件新建

def index(request):
    return HttpResponse("Hello Django!")
5.请求路径

在浏览器输入以下就可以访问

http://localhost:8000/index/
http://127.0.0.1:8000/index/

二.新建一个模板index页面

对于一个页面可以使用更加好的模块来展示,可以使用html展示

1.新建一个html

在对应目录创建templates/index.html文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Django Page</title>
</head>
<body>
<h1>Hello Django!</h1>

</body>
</html>
2.修改view中返回数据

原先

def index(request):
    return HttpResponse("Hello Django!")

修改之后

from django.shortcuts import render
def index(request):
    return render(request,"index.html")

这里使用Django模块的render函数

Django 工作流
  • 1.urls.py 中urlpatterns添加路径,确定跳转的项目函数
  • 2.在项目的新增对应的函数
  • 3.在函数中加载已有 html文档

三.开发模式

MTV开发模式:也就是把数据和表现逻辑分割开的逻辑

MVC模式

Model-View-Controller(MVC):

  • Model 代表数据存取层,

  • View 代表的是系统中选择显示什么和怎么显示的部分

  • Controller 指的是系统中根据用户输入并视需要访问模型,以决定使用哪个视图的那部分。

  • 但是在Django中使用的是MTV模式:
    是模型(Model)、模板(Template)和视图(Views),

四.新建一个Blog

1.新建一个博客模型

使用model 文件用于存放数据模型,这里使用了blog的模型

class BlogPost(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    timestamp = models.DateTimeField()

这里新建了一个BlogPost类,并添加了博客里面的属性。

  • title:用CharField类型,并限制了最大长度
  • body:使用TextField类型
  • timestamp:使用dataTimeField 类型
2.Model转换成中间件

在项目cmd中输入

python manage.py makemigrations 

会出现以下结果

Migrations for 'blog':
  blog\migrations\0001_initial.py
    - Create model BlogPost

可以看到blog项目新建了一个BlogPost的类

3.数据SQLite

Django默认的就是

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/tmp/mysite.db', # use full pathname to avoid confusion
}
}
3.生成blog的表

然后Django需要使用上面给出的链接信息来连接数据库,这里需要设置应用程序需要的表。

python manage.py syncdb

这里输入之后cmd表示syncdb命令不存在。因为Django1.9之后该命令被删除,所以,需要使用migrate命令替代syncdb

python manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
  Applying blog.0001_initial... OK


4.注册数据库表

在admin账号登录之后是没有看到用户类的
需要在blog项目的admin文件中注册

from blog.models import BlogPost

class BlogPostAdmin(admin.ModelAdmin):
    list_display = ('title','timestamp')

admin.site.register(BlogPost,BlogPostAdmin)

在之前的注册的模块是BlogPost,所以在admin的页面展示的也是BlogPost

5.配置html模板

在应用中新建一个archive.html文件用于存放模板

\blog\templates\archive.html

文件内容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!-- archive.html -->
{% for post in posts %}
<h2>{{ post.title }}</h2>
<p>{{ post.timestamp }}</p>
<p>{{ post.body }}</p>
<hr>
{% endfor %}
</body>
</html>

6.配置urls路径

修改项目的urls路径

from blog.views import archive

urlpatterns = [
    path('admin/', admin.site.urls),
    path('blog/',archive)
]
7.虚假视图展示

在view文件中配置

def archive(request):
    post = BlogPost(title='mocktitle', body='mockbody',
                    timestamp=datetime.now())
    return render_to_response('archive.html', {'posts': [post]})

使用虚假视图验证之后发现没有问题就可以换成真实视图

8.真实视图展示

在view文件修改成

from blog.models import BlogPost

def archive(request):
    posts = BlogPost.objects.all()
    return render_to_response('archive.html', {'posts': posts})
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值