Django高级实战 开发企业级问答网站

1. 创建项目与app

创建项目

django-admin startproject firstsite

创建app

python manage.py startapp firstapp

2.settings里面添加app

编辑 firstsite/settings.py:

# Application definition

INSTALLED_APPS = (

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'firstapp',  # 添加刚才创建的app

)

 

3. 编辑models层

打开 firstapp/models.py,编辑如下内容:

from django.db import models

# 创建一个叫 Article 的类,它继承自django.db.models.Model,# headline 和 content 是它的属性,都继承自django.db.models.Field# 并定义了属性的数据类型和限制class Article(models.Model):

headline = models.CharField(null=True, blank=True, max_length=200)

content = models.TextField(null=True, blank=True)

# 让实例在后台管理界面显示自己的headline

def __str__(self):

return self.headline

4. 创建和合并数据库

对 Model 做了修改后,使用 makemigrations 命令,你的 Model 会被扫描, 然后与 migrations文件夹中以前的版本作比较, 然后生成本次迁移文件。

python manage.py makemigrations

有了新的 migration 文件,就可以使用 migrate 命令修改数据库模式:

python manage.py migrate

每次修改完 Model 后都应该执行上诉命令。

5.设置模板路径

在 firstapp 文件夹内创建 templates 和 static 两个文件夹,html 文件放入 templates 文件夹,css、js 和图片等文件放入 static 中.

文档目录树如下:

然后在 settings.py 中修改模板路径:

TEMPLATES = [

{

'BACKEND': 'django.template.backends.django.DjangoTemplates',

# 模板路径,意思是:找到根目录,在根目录下添加 templates

'DIRS': [os.path.join(BASE_DIR, 'firstapp', 'templates').replace('\\','/')],

'APP_DIRS': True,

'OPTIONS': {

'context_processors': [

'django.template.context_processors.debug',

'django.template.context_processors.request',

'django.contrib.auth.context_processors.auth',

'django.contrib.messages.context_processors.messages',

],

},

},]

 

6.创建管理后台和超级管理员

在 firstsite 目录下打开命令行,输入:

python manage.py createsuperuser

按要求,填上用户名、邮箱、密码,打开,登录管理界面,就能看到以下界面:

要让 Article 出现在管理界面,需要在 admin.py 引入相应的数据项:

from django.contrib import adminfrom firstapp.models import Article  # c从模板层引入Article

admin.site.register(Article)  # 在后台管理中添加 Article

这样后台就多了 Article 一项了。

你可以点进去添加新内容:

7.在 View 中获取 Model 的数据

编辑 views.py,引入 model 中文章列表,然后渲染网页:

from django.shortcuts import renderfrom firstapp.models import Article  # 从modles引入刚创建的类Articlefrom django.template import Template,Context

def index(request):

# 全部的文章列表

article_list = Article.objects.all()

# 一个字典结构,包装要渲染的数据

context = {'article_list': article_list}

# 渲染,包含三个参数:request、模板 html 的名字、context

index_page = render(request, 'first_web.html', context)

return index_page

8.在 Template 中增加动态内容

编辑 templates 文件夹里相应的 html 文件(这里我命名为:first_web.html):

<!DOCTYPE html>

<!-- Django 的静态文件标签 -->

{% load staticfiles %}

<html>

<head>

<meta charset="utf-8">

<title>first_web</title>

<!-- 引入 static 文件夹里面的css样式 -->

<link rel="stylesheet" href="{% static 'css/semantic.css' %}" media="screen" title="no title">

</head>

<body>

<div class="ui segment">

<h1 class="ui centered header">Your Blog</h1>

</div>

<div class="ui basic segment">

<!-- 引入 static 文件夹里面的图片 -->

![]({% static )

</div>

<!-- 用一个 for 循环来顺序展示 article 里的内容 -->

{% for article in article_list %}

<div class="ui very padded segment">

<h2>

<i class="star icon"></i>

<!-- article 的标题 -->

{{article.headline}}

</h2>

<!-- article 的内容 -->

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

</div>

<br>

{% endfor %}

<!-- for 循环结束 -->

</body></html>

 

9.在 URL 中分配网址

编辑 urls.py,作用是让链接可以被访问:

from django.conf.urls import include, urlfrom django.contrib import admin# 引入视图from firstapp.views import index

urlpatterns = [

url(r'^admin/', admin.site.urls),

url(r'^index/', index, name='index'),

Django高级实战 开发企业级问答网站✍✍✍的更多相关文章

  1. Django高级实战 开发企业级问答网站完整

    资源获取链接点击这里 Django高级实战 开发企业级问答网站 从实际需求分析开始,实现当今主流知识问答应用的功能,包括动态.文章.问答.私信.消息通知.搜索.个人中心,打造企业级知识问答网站,由此全 ...

  2. Django高级实战 开发企业级问答网站 ✌✌

    Django高级实战 开发企业级问答网站 (一个人学习或许会很枯燥,但是寻找更多志同道合的朋友一起,学习将会变得更加有意义✌✌) 从实际需求分析开始,实现当今主流知识问答应用的功能,包括动态.文章.问 ...

  3. Django高级实战 开发企业级问答网站

    Django高级实战 开发企业级问答网站 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的 ...

  4. vue2.0与实战开发

    慕课网实战 百度云 web前端实战: Node.js入门到企业Web开发中的应用 Web前端性能优化 让你的页面飞起来 前端跳槽面试必备技巧 前端JavaScript面试技巧全套 node.JS 线上 ...

  5. 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程

    点击了解更多Python课程>>> 零基础入门Python实战:四周实现爬虫网站 Django项目视频教程 适用人群: 即将毕业的大学生,工资低工作重的白领,渴望崭露头角的职场新人, ...

  6. 强力Django+杀手级xadmin开发在线教育网站

    强力Django+杀手级xadmin开发在线教育网站采用 Python3.7全新开发 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的 ...

  7. Python+Django+Eclipse 在Windows下快速开发自己的网站

    一.配置开发环境 我的开发环境是:Python3.3.2 + Django1.5.2 + Eclipse 1.安装Python 下载地址:http://www.python.org/getit/ 安装 ...

  8. 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站

    这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...

  9. 高级Java开发人员最常访问的几个网站

    这是高级Java开发人员最常访问的几个网站. 这些网站提供新闻,一般问题或面试问题的答案,精彩的讲座等.质量是优秀网站的关键因素,这此网站都有较高的质量内容.下面逐一介绍: 1. Stackoverf ...

随机推荐

  1. 安装percona-toolkit.rpm时候报错:perl(Time::HiRes) is needed by percona-toolkit-2.2.16-1.noarch

    1.安装percona-toolkit.rpm时候报错: warning: percona-toolkit.rpm: Header V4 DSA/SHA1 Signature, key ID cd2e ...

  2. Android 防止切换横屏闪退

    <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="ht ...

  3. php mysql函数库总结(一)

    连接mysqlresource mysql_connect(host,username,password);设置交互字符集bool mysql_set_charset("utf8|gbk&q ...

  4. luoguP1134 阶乘问题 [数论]

    题目描述 也许你早就知道阶乘的含义,N阶乘是由1到N相乘而产生,如: 12! = 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 9 x 10 x 11 x 12 = 479,001, ...

  5. Python 列表,元组,字典

    0)字符串切片 py_str = 'python' >>>py_str[0] #取第一个字符串,返回值为"p",超出范围会报错 >>>py_st ...

  6. FZU - 2295 Human life:网络流-最大权闭合子图-二进制优化-第九届福建省大学生程序设计竞赛

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 http://acm.fzu.edu.cn/problem.php?pid=2295 htt ...

  7. AdaBoost笔记之通俗易懂原理介绍

    转自:https://blog.csdn.net/px_528/article/details/72963977 写在前面 说到Adaboost,公式与代码网上到处都有,<统计学习方法>里 ...

  8. ECMAScript1.4 对象 | 简单数据类型与复杂数据类型 | 内置对象 | 基本包装类型 | String

    对象 函数和对象的区别: 函数:封装代码 对象:封装属性和方法 创建对象的方法: 1,对象字面量{} // 模拟创建一只dog var dog = { // 属性 name: 'puppy', age ...

  9. 面试总结【css篇】- css3新增特性

    1.css3中的关键帧 @keyframes规则通过在动画序列中定义关键帧(或waypoints)的样式来控制CSS动画序列中的中间步骤.这 比转换更能控制动画序列的中间步骤. @keyframes ...

  10. 关于a[::-1]

    b = a[i:j]   表示复制a[i]到a[j-1],以生成新的list对象,a[:]就相当于完整复制一份a b = a[i:j:s]表示:i,j与上面的一样,但s表示步进,缺省为1.即从i到j每 ...