起名字好难啊!(初识Django),初识django

起名字好难啊!(初识Django),初识django

这次我们将实现一个简单的登录注册功能,并吧相应的数据写入数据库:

做这件事之前我已经在数据库中新建了两张表(当然一张表也可以用,先注册后登录嘛···)

图片 1  图片 2

两张结构很简单的数据表:↓

图片 3

接下来就该干正事了:↓

一、编写要展示给用户的界面(template目录下):(艺术细菌不发达只能这样了。。)

图片 4

(#整个项目用一个url分配地址会显得非常杂乱,所以我在App项目下新建了一个urls)

二、site全局先urls的配置:

图片 5

经过上图↑这样配置,全局中的urls也可以用App下边的资源了

三、配置App下的urls:

图片 6

四、App下的views配置:

图片 7

五、启动服务:在terminal中输入python manage.py runserver启动服务

 图片 8

图片 9

六、浏览器访问:

图片 10

图片 11

 

当你点击提交的时候会把数据写入数据库,不过有时候难免出现一些让人讨厌的bug,不过细心点都没事,都可以解决。

 逻辑很简单,可是每次一敲准出错,我没救了。。。。。。

 

这次我们将实现一个简单的登录注册功能,并吧相应的数据写入数据库:
做这件事之前我已经在…

安装

pip install Django

如果环境中存在多个python版本时(如同时安装2.*和3.*),

2.* 用 py -2 -m pip install modulesname
3.* 用 py -3 -m pip install modulesname


Django下载安装

Django官网下载页面

创建应用

  • 创建项目

    django-admin startproject projectname

  • 创建应用

    python manage.py startapp appname

  • 创建超级管理员

    python manage.py createsuperuser

  • 修改管理员密码

    python manage.py changepassword username


  1、下载Django:

1 pip3 install django==1.11.9

  2、创建一个django project

1 django-admin startproject mysite 创建了一个名为"mysite"的Django 项目:

  

  图片 12

  当前目录下会生成mysite的工程,目录结构如下:(大家注意昂,pip下载下来的django你就理解成一个模块,而不是django项目,这个模块可以帮我们创建django项目)

  图片 13

  • manage.py—–Django项目里面的工具,通过它可以调用djangoshell和数据库,启动关闭项目与项目交互等,不管你将框架分了几个文件,必然有一个启动文件,其实他们本身就是一个文件。
  • settings.py—-包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
  • urls.py—–负责把URL模式映射到应用程序。
  • wsgi.py —- runserver命令就使用wsgiref模块做简单的web
    server,后面会看到renserver命令,所有与socket相关的内容都在这个文件里面了,目前不需要关注它。
1 python manage.py runserver127.0.0.1:8080#此时已经可以启动django项目了,只不过什么逻辑也没有呢

  你会发现,上面没有什么view视图函数的文件啊,这里我们说一个应用与项目的关系,上面我们只是创建了一个项目,并没有创建应用,以微信来举例,微信是不是一个大的项目,但是微信里面是不是有很多个应用,支付应用、聊天应用、朋友圈、小程序等这些在一定程度上都是相互独立的应用,也就是说一个大的项目里面可以有多个应用,也就是说项目是包含应用的,它没有将view放到这个项目目录里面是因为它觉得,一个项目里面可以有多个应用,而每个应用都有自己这个应用的逻辑内容,所以他觉得这个view应该放到应用里面,比如说我们的微信,刚才说了几个应用,这几个应用的逻辑能放到一起吗,放到一起是不是就乱套啦,也不好管理和维护,所以这些应用的逻辑都分开来放,它就帮我们提炼出来了,提炼出来一个叫做应用的东西,所以我们需要来创建这个应用。

    

数据库

  • 配置
    mysql为例

    1. project数据库配置:修改project目录下setting.py文件

    DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'pythonweb', 'USER': 'root', 'PASSWORD':'root', 'HOST':'127.0.0.1', 'PORT':'3306', 'OPTIONS':{ 'autocommit':'TRUE'}, } }
    配置命名可以轻易看出来配置项,不做解释。

    1. 初始化数据库:project目录下__init__.py文件添加:

      import pymysql
      pymysql.install_as_MySQLdb()

  • 同步

    python manage.py migrate

  • 刷新

    python manage.py flush


  3、在mysite目录下创建应用

12 python manage.py startapp blog#通过执行manage.py文件来创建应用,执行这句话一定要注意,你应该在这个manage.py的文件所在目录下执行这句话,因为其他目录里面没有这个文件python manage.py startapp blog2#每个应用都有自己的目录,每个应用的目录下都有自己的views.py视图函数和models.py数据库操作相关的文件

  

  图片 14

  我们现在只需要看其中两个文件

    models.py
:之前我们写的那个名为model的文件就是创建表用的,这个文件就是存放与该app相关的表结构的

    views.py :存放与该app相关的视图函数的

运行服务

  • 启动开发服务器(由于性能原因,只用作测试,不用作生产环境)

    python manage.py runserver [port]


  4、启动django项目

1 python manage.py runserver8080# python manage.py runserver 127.0.0.1:8080,本机就不用写ip地址了 如果连端口都没写,默认是本机的8000端口

  

这样我们的django就启动起来了!当我们访问:

图片 15

学习Django,我们就学上面的这些文件,怎么在MTV+url分发的功能下来使用。

  最后我们说一下,其实我们将来创建django项目,很少用命令行了,就用pycharm来创建,怎么创建呢?看图:

  图片 16

  图片 17

    看项目目录:

    图片 18

修改首页

  • 激活应用

    修改project目录下同名子目录中的setting.py文件

    INSTALLED_APPS = [
    ‘django.contrib.admin’,
    ‘django.contrib.auth’,
    ‘django.contrib.contenttypes’,
    ‘django.contrib.sessions’,
    ‘django.contrib.messages’,
    ‘django.contrib.staticfiles’,
    appname‘,
    ]

    其中,django.conrib.*都是django自带的系统应用,将appname添加后即激活成功。

  • 增加view方法
    appname 下的views.py文件增加如下配置:

from django.http import HttpResponse
def index(request):
return HttpResponse(“Welcome to here.”)

- 配置url
  为新增的view配置url,   修改`project`目录下的同名子目录中的urls.py文件, 增加如下配置:

from edu import views as edu_views
urlpatterns = [
url(r’^$’, edu_views.index),
]

- 重新应用
  手动或自动重启后,在浏览器输入`http://127.0.0.1:8000/`即显示`Welcome to here.`

***

### 为应用添加带参链接

   **以两数求和为例**

   - 增加view方法
      为`appname` 下的views.py文件增加如下配置:
      ```
     def add(request):
         a = request.GET['a']
         b = request.GET['b']
         c = int(a) + int(b)
         return HttpResponse("result:" + str(c))
  • 配置url
    为新增的view配置url,
    修改project目录下同名子目录中的urls.py文件urlpatterns,
    增加如下配置:

url(r’^add/$’, edu_views.add),

- 重启应用
  手动或自动重启后,浏览器输入`http://127.0.0.1:8000/add/?a=10&b=10` 即显示`result:20`。

***

至此,对Django有个初步的了解,更多了解学习,待续...

基于Django实现一个简单的示例

  现在实现一个用户输入一个timer路径,返回一个含有当前时间的页面,想想怎么做?用户输入网址–>路径–>函数–>返回数据

  url控制器

12345678910 fromdjango.contribimportadminfromdjango.urlsimportpath#找对应的函数,是哪个app里面的函数fromapp01importviewsurlpatterns=[path('admin/', admin.site.urls),#这个先不用管,后面会学path('index/',views.index),]

  视图

1234567891011 fromdjango.shortcutsimportrender,HttpResponse# Create your views here.#逻辑和返回数据defindex:importdatetimenow=datetime.datetime.now()ctime=now.strftime("%Y-%m-%d %X")  #return HttpResponse('哈哈,好玩吗?')returnrender(request,"index.html",{"ctime":ctime})#render,渲染html页面文件并返回给浏览器

  模板

123456789101112 <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><h4>当前时间:{{ ctime }}</h4></body></html>

  

  通过pycharm来运行项目:

    图片 19

    看控制台:

    图片 20

  执行效果如下:

    图片 21

  有同学说:我想自己配置启动的端口怎么搞啊:

  图片 22

    图片 23

    

  还有一点说一下昂,在settings配置文件里面有关于templates(放html文件的配置):

12345678910111213141516 TEMPLATES=[{'BACKEND':'django.template.backends.django.DjangoTemplates','DIRS': [os.path.join(BASE_DIR,'templates')]#有些版本的django没有写这个,自己写一下,就是配置一个django找html文件的路径,render方法就来这里找html文件,'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',],},},]

  关于请求和响应的请求信息和相应信息的设置还需要你自己写吗?之前我们用wsgiref是不是还写来着,现在都不需要写了,简单不。

  还有一点:post请求的时候你会发现一个 Forbidden的错误:

    图片 24

  现在只需要做一步,在settings配置文件里面将这一行注释掉,这是django给你加的一个csrf的认证,现在不需要,我们会讲的

123456789 MIDDLEWARE=['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware',# 'django.middleware.csrf.CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]

  还记得django写视图函数的时候,有一个参数是必须要给的吗,叫做request,如果你是post请求,那么就用request.POST,就能拿到post请求提交过来的所有数据(一个字典,然后再通过字典取值request.POST.get(‘username’),取出来的就是个字符串,你在那个字典里面看到的是{‘username’:[‘chao’]},虽然看着是列表,但是request.POST.get(‘username’)取出来的就是个字符串),通过request.GET就能拿到提交过来的所有数据,而且记着,每一个视图函数都要给人家返回一些内容,用render或者HttpResponse等,其实render里面也是通过HttpResponse来返回内容,不然会报错,错误是告诉你没有返回任何内容:

    图片 25

相关文章