欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PythonWeb_Django(1)

程序员文章站 2022-06-13 13:23:39
...

引言

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

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

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

PythonWeb_Django(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)

 1:第一步

 PythonWeb_Django(1)

 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)

 Run manage.py Task

 aaa@qq.com > runserver  8080

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

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

 PythonWeb_Django(1)

 

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

 

4 PythonWebMysqlAPI接口开发

项目架构:

PythonWeb_Django(1)

 

与上面的发开相同,后台采用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)

然后界面是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)

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

 

 

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

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

 PythonWeb_Django(1)

项目架构

在图中存放网页需要的图片,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 %}
<link rel="stylesheet"type="text/css"href="{%  static 'polls/style.css' %}" />

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

 检查项目错误






 

相关标签: pythonweb Django