在安装好Anaconda和django之后,我们就可以开始创建自己的第一个Web app,那么首先创建一个空文件夹,之后创建的文件都在这个文件夹内。

启动命令行进入此文件夹内,可以先通过如下命令查看一下自己的python版本和django版本。

python --version  django-admin --version

我的python和django版本分别是3.7.0和2.1.5

使用如下命令创建第一个项目,命名为mysite。

django-admin startproject mysite

命令执行后,会在当前文件夹下生成一个名字为mysite文件夹,文件目录如下:

mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
wsgi.py

然后命令行进入mysite文件夹下,输入 python manage.py runserver ,即可启动django development server,在浏览器中输入http://127.0.0.1:8000/可看到如下界面,表示第一步成功了,该界面是django的默认界面,之后我们可以对此页面内容进行自定义。

此时可以按CTRL+C退出runserver,也可以重新打开一个命令窗口,然后输入如下命令创建第一个App,这里我将app命名为main。

python manage.py startapp main

命令执行后生成了一个新的文件夹main,此时主要文件结构如下,至此文件基本框架已经建成:

mysite/
manage.py
mysite/
main/

那么django是如何呈现数据的呢,下面这段话很清楚的解释了django的工作原理,这段话来自一位YouTube的博主sentdex[1],他在YouTube上还有很多其他的python教程,感兴趣的可以看看,我的django入门也主要来自于他的教程,第一次读这段话刚开始可能并不理解,但跟着教程做一遍之后再回过头来看就能明白了:

Django uses what's called a Model View Controller paradigm. Every page you visit on a Django application is likely using these three things to serve you data.

  • Model: Your database abstraction, which will contain objects that are mapped to your database. For example, we'll have a "Tutorial" model/object, a "User model/object," a "Tutorial Series" model/object...etc. All you need to do is define these models and Django handles the rest for you. You can even change your models down the line and, through migrations, Django can help you get it done within seconds, rather than the likely hour...or more... it would take you to do this yourself.
  • View: How you will represent the data. This is where you will actually render things to a user.
  • Controller: How you map URLs to views.

While we call it an MVC (model, view, controller), you can imagine it moreso working in reverse. A user will visit a URL, your controller (urls.py) will point to a specific view (views.py). That view can then (it doesn't actually HAVE to) interface with your models.

django的优势在于可扩展性好,当我们在后期想要对网站添加某些功能时非常方便,django可以保证这些文件仍然组织的很好。

接下来 我们修改主页内容,使其显示“Hello,World!”

第一步:进入mysite文件夹,打开urls.py,django把网站看作是一堆app的集合,django通过指向某个app下的ursl.py来指向该app,因此要把该app下的urls包含进来,mysite/ursl.py修改后如下,使用include别忘记从django.urls导入include,也不要忘记path命令行后的逗号:

 from django.contrib import admin
from django.urls import path, include urlpatterns = [
path('', include('main.urls')),
path('admin/', admin.site.urls),
]

第二步:进入main文件夹,此文件夹下并没有urls.py,我们需要自己新建一个,写入如下内容:

 from django.urls import path
from . import views app_name = 'main' #此处为了urls的命名空间 urlpatterns = [
path('', views.homepage, name='homepage'),
]

第三步:修改main文件夹下的views.py,该文件用来返回一些html页面,此时我们要在首页显示“Hello,World!”,为了简单我们直接使用HttpResponse,首先导入HttpResponse,然后定义一个函数用来显示内容:

 from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def homepage(request):
return HttpResponse("Hello, World!")

最后,我们再次runserver,进入http://127.0.0.1:8000/,可以看到如下界面:

在这个教程里,我产生了一个疑问:到哪里查找命令的用法呢?比如HttpResponse的用法是什么?这些可以在django的帮助文档中找到[2]。

参考链接:

[1] https://pythonprogramming.net/django-web-development-python-tutorial/

[2] https://docs.djangoproject.com/en/2.1/ref/request-response/

Anaconda+django写出第一个web app(一)的更多相关文章

  1. Anaconda+django写出第一个web app(十一)

    今天我们来学习给页面添加一个Sidebar,根据Sidebar跳转到相应的tutorial. 打开views.py,编辑single_slug函数: def single_slug(request, ...

  2. Anaconda+django写出第一个web app(十)

    今天继续学习外键的使用. 当我们有了category.series和很多tutorials时,我们查看某个tutorial,可能需要这样的路径http://127.0.0.1:8000/categor ...

  3. Anaconda+django写出第一个web app(九)

    今天来学习外键的使用,用外键来连接数据库中的两个表. 当我们的tutorials非常多的时候,目前的显示方式就会使得页面非常凌乱.我们可以考虑把这些教程分为不同的系列,页面只显示标题以及概要等信息,进 ...

  4. Anaconda+django写出第一个web app(三)

    前面我们已经建立了模型Tutorial,也已经可以用Navicat Premium打开数据看查看数据,接下来我们通过建立admin账户来上传数据. 在命令行执行如下命令来创建用户: python ma ...

  5. Anaconda+django写出第一个web app(二)

    今天开始建立App中的第一个Model,命名为Tutorial. Model的定义在main文件夹下的models.py中通过类进行,我们希望Tutorial这个model包含三个属性:标题.内容和发 ...

  6. Anaconda+django写出第一个web app(七)

    今天来实现如何在页面弹出一些信息,比如注册成功后弹出注册成功的信息.这一点可以通过materialize里的Toasts来实现. django自带的messages可以告诉我们是否注册成功,以及注册失 ...

  7. Anaconda+django写出第一个web app(六)

    今天学习如何写一个注册用户的界面. 上一节的导航栏中我们修改了导航栏右侧的文字为register并将路径设置为/register,内容如下: <li><a href="/r ...

  8. Anaconda+django写出第一个web app(四)

    前面对Models有了一些了解,今天开始进一步了解Views,了解Views如何和Models交互以及了解模板(templates). 打开main文件夹下的views.py,重新编写homepage ...

  9. Anaconda+django写出第一个web app(八)

    今天来实现网站的登入和登出功能. 首先我们需要在urls.py中添加路径,注意此处的路径和在导航栏中设置的文字路径保持一致: from django.urls import path from . i ...

随机推荐

  1. Ubuntu安装使用中的一些注意事项

    在win7上安装VMware workstations10.0 ,在VMware workstations10.0上安装Ubuntu14.04 64位时,关于网络的连接注意: win7 网络连接里上的 ...

  2. 【转】正确的 Composer 扩展包安装方法

    简单解释 composer install - 如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖: composer update - 从 c ...

  3. 半夜思考之查漏补缺 , Spring 中的 Bean 继承机制

    这里的继承 , 不是 Java 中的继承 , 下面就总结下 Bean继承与Java继承的区别: Spring 中的子类 Bean 和父 Bean 可以是不同类型 , 但是 Java 中的继承则可保证子 ...

  4. iphonex适配

    这一篇具体适配步骤比较全面 iphonex适配 这一篇图文讲解比较全面 关于H5页面在iPhoneX适配

  5. UVALive6442_Coins on a Ring

    真正的水题,可惜无法当场机智一下. 这样的,在一个圈圈上给你n个黑点,现在要你移动每一个黑点使得所有的点都是等间距的,每个点中最远需要一定的那个点最小可以是多少? 其实是这样来考虑的,我们可以随便设置 ...

  6. Django 2.0 学习(22):Django CSRF

    Django CSRF CSRF攻击过程 攻击说明: 1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登陆网站A: 2.在用户信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时 ...

  7. Qt——基本工具的使用

    本文主要介绍在windows系统中使用C++编写Qt程序所需要的一些工具,不会具体地讲工具怎么使用. 其它系统的安装本文不会涉及,在http://wiki.qt.io/Main中,有关于各种系统qt安 ...

  8. 5W2H方法

    5W2H分析方法也叫七问分析法,是二战中美国陆军兵器修理部首创.简单.方便.易于理解.使用,富有启发意义,被广泛应用于企业管理和技术活动,对于决策和执行性的措施也非常有帮助,有助于弥补考虑问题的疏漏 ...

  9. 在 Linux服务器中安装 Python 3.6

    一.服务器环境配置 在 CentOS 7 中安装 Python 之前,请确保系统中已经有了所有必要的开发依赖: # yum -y groupinstall development # yum -y i ...

  10. Java8 新特性Stream 的学习和使用方法

    流(Stream) 流是java 8 中新引入的特性,用来处理集合中的数据,Stream 是一个来自数据源的元素队列并支持聚合操作. Java 中 Stream 不会存储元素. 数据源 流的来源. 可 ...