创建Django目录

  startproject my_project

创建APP

  startapp my_app

手动创建的文件夹

  log  日志

  media  用户上传下载

  static  静态文件

  

配置数据库

  找到DATABASES  

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'testdjango',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        ',
    }
}

Django默认为我们提供了很多功能,但是这些功能的背后需要有一定的数据表来做支撑

生成Django默认的数据表

  进入pycharm的Tools--Run manage.py Task...

    执行:makemigrations  在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动

       migrate      生成数据表

    

运行项目

  Run--Debug--选择自己创建的项目

    默认访问地址:http://127.0.0.1:8000/

环境测试(留言板功能)

首先将写好的html、css等静态文件放到static文件夹下

配置url

  

from message.views import get_form

urlpatterns = [
    path('admin/', admin.site.urls),
    path('form/', get_form),   
]

配置view(app下的views.py文件)

  

def get_form(request):
    return render(request, 'message_form.html')

TemplateDoesNotExist

  在Django的setting,py文件中有一个TEMPLATES(指明了我们获取模板文件的处理类)

  在DIRS指明目录

  

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

# 获取根目录

# 在TEMPLATES中加入
'DIRS': [os.path.join(BASE_DIR, 'templates')],
 

配置静态路径

  在setting.py文件的 STATIC_URL = '/static/' 下面加上

  

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]

项目配置流程

Model设计

新建的Model需要在setting中配置

  在 INSTALLED_APPS下加入

    'message',

ORM

编写Models.py

class UserMessage(models.Model):    object_id = models.CharField(max_length=50, default="", primary_key=True, verbose_name=u"主键")    name = models.CharField(max_length=20, null=True, blank=True, default="", verbose_name=u"用户名")    email = models.EmailField(verbose_name=u"邮箱")    address = models.CharField(max_length=100, verbose_name=u"联系地址")    message = models.CharField(max_length=500, verbose_name=u"留言信息")

    class Meta:        verbose_name = u"用户留言信息"

如果有编码问题请在Model.py文件的上方加上

  # _*_ coding:utf-8 _*_

通过Task执行  

  makemigrations messages

    然后会创建一个 0001_initial.py 文件

再执行

  migrate message

查询数据库中的记录

views.py 

# 查询数据def get_form(request):
    all_message = UserMessage.objects.all()
    for message in all_message:
        print(message.name)
    return render(request, 'message_form.html')
# 插入数据def get_form(request):
    user_message = UserMessage()        # 实例化对象
    user_message.name = "陈林2"
    user_message.email = "1@qq.com"
    user_message.address = "广东"
    user_message.message = "信息"
    user_message.object_id = "
    user_message.save()

    return render(request, 'message_form.html')

form表单内必须加

  {% csrf_token %}

接收表单POST过来的数据添加到数据库

# 通过POST接收到的数据添加到数据库def get_form(request):
    if request.method == "POST":
        name = request.POST.get('name', '')
        email = request.POST.get('email', '')
        address = request.POST.get('address', '')
        message = request.POST.get('message', '')
        user_message = UserMessage()        # 实例化对象
        user_message.name = name
        user_message.email = email
        user_message.address = address
        user_message.message = message
        user_message.object_id = '
        user_message.save()

    return render(request, 'message_form.html')
# 删除数据def get_form(request):
    all_message = UserMessage.objects.filter(name='陈林', address='广州白云')
    # all_message.delete()
    for message in all_message:
        message.delete()
        print(message.name)

    return render(request, 'message_form.html')

[2018-10-29] python开发个人资源共享网--第二天的更多相关文章

  1. [2018-08-03] python开发个人资源共享网--第一天

    项目需求-环境搭建 python版本:python 3.6.2 开发工具:PyCharm 数据库:MySql5.7.24 数据库管理工具:Navicat 环境搭建完毕 ---------------- ...

  2. 【从零学习Python】Ubuntu14.10下Python开发环境配置

    1. 前言 近期在研究计算机视觉的一些算法,也刚開始接触linux,试着在ubuntu下用qt+openCV进行开发,感觉还行.可是Python作为在学术领域广为应用的高级解释性语言.其在计算机视觉的 ...

  3. 2018.10.29 bzoj4564: [Haoi2016]地图(仙人掌+莫队)

    传送门 根据原图建一棵新的树. 把原图每一个环上除了深度最浅的点以外的点全部向深度最浅的点连边. 然后可以搞出来一个dfsdfsdfs. 这个时候我们就成功把问题转换成了对子树的询问. 然后就可以对权 ...

  4. 2018.10.29 洛谷P4129 [SHOI2006]仙人掌(仙人掌+高精度)

    传送门 显然求出每一个环的大小. Ans=∏i(siz[i]+1)Ans=\prod_i(siz[i]+1)Ans=∏i​(siz[i]+1) 注意用高精度存答案. 代码: #include<b ...

  5. 2018.10.29 NOIP2018模拟赛 解题报告

    得分: \(70+60+0=130\)(\(T3\)来不及打了,结果爆\(0\)) \(T1\):简单的求和(点此看题面) 原题: [HDU4473]Exam 这道题其实就是上面那题的弱化版,只不过把 ...

  6. 2018.10.29 bzoj3718: [PA2014]Parking(树状数组)

    传送门 显然只用判断两个会相交的车会不会卡住就行了. 直接树状数组维护后缀最大值就行了. 代码: #include<bits/stdc++.h> using namespace std; ...

  7. 2018.10.29 NOIP训练 数据结构(带修改莫队)

    传送门 带修莫队板题. 直接按照经典写法做就行了. 代码

  8. 2018.10.29 bzoj1023: [SHOI2008]cactus仙人掌图(仙人掌+单调队列优化dp)

    传送门 求仙人掌的直径. 感觉不是很难. 分点在环上面和不在环上分类讨论. 不在环上直接树形dpdpdp. 然后如果在环上讨论一波. 首先对环的祖先有贡献的只有环上dfsdfsdfs序最小的点. 对答 ...

  9. 2018.10.26-day5 python整理总结

    今日内容: 1.字典 2.id is == 3.小数据池 4.集合昨日回顾:1.列表:可变的 增:append//insert//extend//+//* 删:remove//pop//clear// ...

随机推荐

  1. Redis 的底层数据结构(跳跃表)

    字典相对于数组,链表来说,是一种较高层次的数据结构,像我们的汉语字典一样,可以通过拼音或偏旁唯一确定一个汉字,在程序里我们管每一个映射关系叫做一个键值对,很多个键值对放在一起就构成了我们的字典结构. ...

  2. raspbian修改swap分区为硬盘上的分区

    一直以为raspbian的swap分区和平常装系统时候的swap分区是一样的,最近用u盘插在树莓派上运行后发现这个交换分区和我想象中不一样. 百度后发现它是一个文件挂上去的.直接搞把! pi@rasp ...

  3. Rust到底值不值得学--Rust对比、特色和理念

    前言 其实我一直弄不明白一点,那就是计算机技术的发展,是让这个世界变得简单了,还是变得更复杂了. 当然这只是一个玩笑,可别把这个问题当真. 然而对于IT从业者来说,这可不是一个玩笑.几乎每一次的技术发 ...

  4. cookie和session,cookie和web storage

    一.cookie和session cookie和session的共同之处在于:cookie和session都是用来跟踪浏览器用户身份的会话方式. session指的是访问者从到达某个特定页面到离开为止 ...

  5. 题解:2018级算法第二次上机 Zexal的竞赛

    题目描述: 样例: 实现解释: 一道需要一点思考的动态规划题目 知识点:动态规划,数据记录 首先将题目描述调整:分别输入不同分数的题目总分(便于后续计算),当获得了i分数的总分后无法获得i-1和i+1 ...

  6. Vue中插槽指令

    08.29自我总结 Vue中插槽指令 意义 就是在组件里留着差值方便后续组件内容新增 而且由于插件是写在父级中数据可以直接父级中传输而不需要传子再传父有些情况会减少写代码量 示例 <div id ...

  7. RF作用与目的

    robotframework自动化原理:通过ride工具编写脚本,加载指定的UI测试库,再通过pybot程序去运行指定脚本,调用浏览器驱动,打开浏览器,操作浏览器页面元素,达到模拟用户操作的行为 为什 ...

  8. CSS中颜色表示方法及颜色表

    一:直接用颜色的英文名表示 二:RGB(x,y,z)函数表示,x.y.z.分别是红色.绿色.蓝色的值,x,y,z∈[0,225],亦可用百分比表示:对比rgba(x,y,z,a)中a是alpha通道设 ...

  9. 物理机安装Kali Linux + Windows10双系统安装教程

    转自 https://www.linuxidc.com/Linux/2018-08/153429.htm 一.镜像下载: 根据需求下载自己需要的版本 从官网下载kali 2018.2 的安装包:htt ...

  10. window 下Notepad++设置为文本文件的默认打开程序失败

    1.右键Notepad++的可执行程序,选择"属性"  -- "兼容性" , 设置Notepad++以管理员的身份运行 2.打开Notepad++ ," ...