PythonWeb_Django(1)

引言

Python下有许多款不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django

Django是一个开放源代码的Web应用框架,由Python写成。

Django采用了MVC的软件设计模式,即模型M,视图V和控制器C

PythonWeb_Django(1)_第1张图片

Web框架

 

参考:https://blog.csdn.net/workdsz/article/details/78093648

官方:https://docs.djangoproject.com/zh-hans/2.0/

1 Django环境搭建

Python的安装只需要  pip  install django

Pycharmdjango导入:

PythonWeb_Django(1)_第2张图片

 1:第一步

 PythonWeb_Django(1)_第3张图片

 2:第二步

2启动mysql服务

下载安装mysql并配置环境变量,略。

安装后目录结构是没有data文件的


管理员身份运行cmd

进入mysqlbin路径下,执行命令:mysqld --initialize-insecure --user=mysql  E:\mysql-5.7.20-winx64目录下生成data目录。

 执行 net start mysql ,启动mysql服务,若提示:服务名无效,则执行mysqld -install即可。然后再启动mysql服务。

 查询用户密码:

查询用户密码命令:mysql> select host,user,authentication_string from mysql.user;

 mysql 8.0.1版本修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '修改root密码';

 登陆mysql,并创建mytestdb数据库:

 

 3 Django工程创建及测试

创建一个简单的Django工程

 修改settings.py,修改DATABASES配置为mysql,

 DATABASES = {
        'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mytestdb',
        'USER':'root',
        'PASSWORD':'123456',

    }
}

 修改_init_.py

 import pymysql
pymysql.install_as_MySQLdb()
db=pymysql.connect("localhost","root","123456","mytestdb")
cursor=db.cursor()
cursor.execute("select version()")
data=cursor.fetchone()

print("Database version : %s" % data)
db.close()

PythonWeb_Django(1)_第4张图片

 Run manage.py Task

 manage.py@DjangoCode > runserver  8080

显示出红框内的,证明Django的后台数据服务已经搭建完成。

浏览器中输入:http://127.0.0.18080/

 PythonWeb_Django(1)_第5张图片

 

前端页面是Django默认的欢迎页面,证明Django项目前后台连接成功,一个简单的Django工程搭建完毕。

 

4 PythonWebMysqlAPI接口开发

项目架构:

PythonWeb_Django(1)_第6张图片

 

与上面的发开相同,后台采用mysql数据库。

DjangoCode/setting.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mytestdb',
        'USER':'root',
        'PASSWORD':'123456',

     }
}

urls.py:这个脚本对应根目录下的url的设置。本次开发*/polls,*/admin两个路径,/polls对应的url下级路径对应了polls.urls.py

Django/urls.py:

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]

 

polls.urls.pyviews.index对应的为print(HelloWorld!),所以在进入127.0.0.1:8000/polls/,展示的内容为views.py的def 函数(print(HelloWorld!)),这就是一个最简单的接口。

from django.urls import path
from . import views

urlpatterns=[
    path('', views.index, name='index'),


]

 现在我们进入127.0.0.1:8000/admin的开发,

1创建models

polls/models.py

创建Questionchoice类。

from django.db import models

class Question(models.Model):
    question_text=models.CharField(max_length=200)
    pub_date=models.DateTimeField('date published')
    def __str__(self):
        return self.question_text

class choice(models.Model):
    question=models.ForeignKey(Question,on_delete=models.CASCADE)
    choice_text=models.CharField(max_length=200)
    votes=models.IntegerField(default=0)
    def __str__(self):
        return self.choice_text

 

2激活模型

$ python manage.py sqlmigrate polls 0001

 这个过程Django会自动检测models.py的变化,在mysql数据库中创建工程需要的表。

 登陆mysql数据库,查看创建的表,基本上是一些网站登陆的用户权限表,polls_choicepolls_question对应的是models.py对应的类。

 

其实在后台Django也可以看到创建表的过程:

CREATE TABLE "polls_question" (

    "id" serial NOT NULL PRIMARY KEY,

    "question_text" varchar(200) NOT NULL,

    "pub_date" timestamp with time zone NOT NULL);

目前这个表还是空的。

 

3登陆网站

创建超级用户:create superuser

按照提示输入账号邮箱密码

登陆系统:runserver 8000

浏览器中:http://127.0.0.1:80000/admin/

PythonWeb_Django(1)_第7张图片

然后界面是Django默认的登陆。账号密码为刚才创建的超级用户。

 

4管理页面中添加应用

polls/urls.py

from django.urls import path

from . import views

urlpatterns=[
    path('', views.index, name='index'),


]

刷新网页,可以看到polls放到admin页面中。PollsQuestion其实对应的为mysql的表polls_questions,修改后台数据库的表,页面的Question会发生同步变化。

 PythonWeb_Django(1)_第8张图片

修改Questions页面内容,addquestion同时数据库对应的表内容也会发生变化。这就是一个Web与数据库API交互的例子。

 

 

5 Django项目中引用静态文件(js/css/image

Setting.py中设置找寻static文件路径:

 PythonWeb_Django(1)_第9张图片

项目架构

在图中存放网页需要的图片,css等。统一放在polls/static/polls/,可以再该路径下在建三个文件夹images,css,javascript,对应的静态文件放在相应位置。

 

配置项目查找静态文件的默认路径

setting.py:

STATIC_URL = '/static/'

HERE = os.path.dirname(os.path.abspath(__file__))

HERE = os.path.join(HERE, '../')

STATICFILES_DIRS = (

    # Put strings here, like "/home/html/static" or "C:/www/django/static".

    # Always use forward slashes, even on Windows.

    # Don't forget to use absolute paths, not relative paths.

    os.path.join(HERE, 'static/'),

)

 在需要的html(index.html)中文件头添加加载静态文件,如下面的设置一个加载css路径的配置:

{% load static %}

Django中的APP应用不能和python的模块/包重名,会部署错误。最简单的APP应用取名字可以用django-应用,这种方式。

setting.py:


 TIME_ZONE = 'Asia/Shanghai'    #时区时间设置,需要设为中国时间

 INSTALLED_APPS:默认的都有以下几个:

django.contrib.admin:admin管理后台站点

django.contrib.auth:身份认证系统

django.contrib.contenttypes:内容类型框架

django.contrib.sessions:会话框架

django.contrib.messages:消息框架

django.contrib.staticfiles:静态文件管理框架

'polls.apps.PollsConfig',  添加自己创建的应用


6 admin重要的命令备忘

1. Python manage.py migrate  

为自己的应用创建需要的数据库表,为对象创建给予数据库访问API

2. Python manage.py makemigration polls(应用名)

通过运行makemigrations命令,相当于告诉Django你对模型有改动,并且你想把这些改动保存为一个“迁移(migration)”。migrationsDjango保存模型修改记录的文件,这些文件保存在磁盘上。在例子中,它就是polls/migrations/0001_initial.py,你可以打开它看看,里面保存的都是人类可读并且可编辑的内容,方便你随时手动修改。

激活虚拟环境,不会再数据库中创建表,但是会生产一个0001_initial.py的日志。

 3. python manage.py sqlmigrate polls 0001

 0001迁移日志文件输出为SQL语句,这些SQL命令并没有实际执行,只是在控制台中显示出来方便阅读。

4. python manage.py check

 检查项目错误






 

你可能感兴趣的:(web开发)