python django todolist 增删改查

python django todolist 增删改查_第1张图片
image.png

git:https://github.com/huangantai/todolist.git
1、
pip install django=='2.1'
django-admin startproject todolist
django-admin startapp simpletodo
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2
2、settings.py 和 urls.py 设置

settings.py (注释csrf中间件)

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'simpletodo',
'xadmin',
'crispy_forms',
'reversion',
]
LANGUAGE_CODE = 'zh-Hans'
TIME_ZONE = 'Asia/Shanghai'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
'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',
],
},
},
]
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, '/static/')

urls.py

from django.urls import path,include
from simpletodo import views
import xadmin
xadmin.autodiscover()

from xadmin.plugins import xversion
xversion.register_models()

urlpatterns = [
path('admin/', xadmin.site.urls),
path(r'', views.todolist),
path(r'simpletodo/',include('simpletodo.urls'))
]

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py collectstatic

3、simpletodo/models.py adminx.py urls.py views.py

models.py

from django.db import models
from django.contrib.auth.models import User

Create your models here.

class Todo(models.Model):
id=models.AutoField(primary_key=True)
user = models.ForeignKey(User,on_delete=models.CASCADE)
todo = models.CharField(max_length=50)
flag = models.CharField(max_length=2)
priority = models.CharField(max_length=2)
pubtime = models.DateTimeField(auto_now_add=True)

def __unicode__(self):
    return u'%d %s %s' % (self.id, self.todo, self.flag)

class Meta:
    ordering = ['priority', 'pubtime']

adminx.py

import xadmin
from simpletodo.models import Todo

Register your models here.

class TodoAdmin(object):
list_display = ['user', 'todo', 'priority', 'flag', 'pubtime']
list_filter = ['pubtime','priority']
ordering = ['-pubtime']
list_editable=['todo','priority','flag']

xadmin.site.register(Todo, TodoAdmin)
[root@centos8 simpletodo]# vi adminx.py
[root@centos8 simpletodo]# cat adminx.py
from xadmin import views
import xadmin

class BaseSetting(object):
"""xadmin的基本配置"""
enable_themes = True # 开启主题切换功能
use_bootswatch = True

class GlobalSettings(object):
"""xadmin的全局配置"""
site_title = "todolist" # 设置站点标题
site_footer = "-todolist-" # 设置站点的页脚
menu_style = "accordion" # 设置菜单折叠

xadmin.site.register(views.CommAdminView, GlobalSettings)
xadmin.site.register(views.BaseAdminView, BaseSetting)

from simpletodo.models import Todo

Register your models here.

class TodoAdmin(object):
list_display = ['user', 'todo', 'priority', 'flag', 'pubtime']
list_filter = ['pubtime','priority']
ordering = ['-pubtime']
list_editable=['todo','priority','flag']

xadmin.site.register(Todo, TodoAdmin)

urls.py

!/usr/bin/python

-- coding: utf-8 --

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

urlpatterns = [
path(r'',views.todolist),
path(r'addtodo/', views.addtodo,name='add'),
path(r'todofinish/', views.todofinish,name='finish'),
path(r'todobackout/', views.todoback,name='backout'),
path(r'updatetodo/', views.updatetodo,name='update'),
path(r'tododelete/', views.tododelete,name='delete')
]

views.py

from django.shortcuts import render,render_to_response
from django.contrib.auth.models import User
from django.http import HttpResponseRedirect
from django.template import RequestContext
from django.http import Http404
from simpletodo.models import Todo

Create your views here.

def todolist(request):
todolist=Todo.objects.filter(flag="1")
finishtodos=Todo.objects.filter(flag="0")
return render_to_response('simpletodo.html',{'todolist':todolist,'finishtodos':finishtodos})

def todofinish(request,id=''):
todo=Todo.objects.get(id=id)
print(todo.flag,id)
if todo.flag=="1":
todo.flag="0"
todo.save()
return HttpResponseRedirect('/simpletodo/')

def todoback(request,id=''):
todo=Todo.objects.get(id=id)
if todo.flag=="0":
todo.flag="1"
todo.save()
return HttpResponseRedirect('/simpletodo/')

def tododelete(request,id=''):
try:
todo=Todo.objects.get(id=id)
except Exception:
raise Http404
if todo:
todo.delete()
return HttpResponseRedirect('/simpletodo/')

def addtodo(request):
if request.method=='POST':
atodo=request.POST['todo']
priority=request.POST['priority']
if not priority:priority=0
user = User.objects.get(id='1')
todo = Todo(user=user, todo=atodo, priority=priority, flag="1")
todo.save()
todolist = Todo.objects.filter(flag="1")
finishtodos = Todo.objects.filter(flag="0")
return render_to_response('showtodo.html',{'todolist': todolist, 'finishtodos': finishtodos})
else:
todolist = Todo.objects.filter(flag="1")
finishtodos = Todo.objects.filter(flag="0")
return render_to_response('simpletodo.html',{'todolist': todolist, 'finishtodos': finishtodos})

def updatetodo(request,id=''):
if request.method == 'POST':
atodo = request.POST['todo']
priority = request.POST['priority']
user = User.objects.get(id='1')
todo=Todo.objects.get(id=id)
todo.todo=atodo
todo.priority=priority
todo.save()
todolist = Todo.objects.filter(flag="1")
finishtodos = Todo.objects.filter(flag="0")
return render_to_response('simpletodo.html',{'todolist': todolist, 'finishtodos': finishtodos})
else:
try:
todo = Todo.objects.get(id=id)
except Exception:
raise Http404
return render_to_response('updatatodo.html', {'todo': todo})

4、templates/simpletodo.html updatatodo.html showtodo.html

simpletodo.html




{% block title %}Simple Todo{% endblock %}




{% block extra_head %}


{% endblock %}






{% block todo %}







{% for todo in todolist %}
{% if todo.priority == '1' %}

{% endif %}
{% if todo.priority == '2' %}

{% endif %}
{% if todo.priority == '3' %}

{% endif %}




{% endfor %}
{% for ftodo in finishtodos %}





{% endfor %}


待办事项


{{ todo.todo }} {{ todo.pubtime|date:'Y-m-d'}}





{{ ftodo.todo }} {{ ftodo.pubtime|date:'Y-m-d'}}







ADD

{% endblock %}







updatatodo.html

{% extends 'simpletodo.html'%}

{% block title %} update Todo {% endblock %}

{% block todo %}

{% csrf_token %}



{% endblock %}

showtodo.html


{% block todo %}







{% for todo in todolist %}
{% if todo.priority == '1' %}

{% endif %}
{% if todo.priority == '2' %}

{% endif %}
{% if todo.priority == '3' %}

{% endif %}



{% endfor %}
{% for ftodo in finishtodos %}




{% endfor %}


待办事项


{{ todo.todo }}





{{ ftodo.todo }}







ADD

{% endblock %}

5、static/css js img

css

bootstrap.min.css

img

glyphicons-halflings.png glyphicons-halflings-white.png

js

ajaxpost.js bootstrap.js bootstrap.min.js jquery.js modernizr.js
(document).ajaxSend(function(event, xhr, settings) { function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie != '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie string begin with the name we want? if (cookie.substring(0, name.length + 1) == (name + '=')) { cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); break; } } } return cookieValue; } function sameOrigin(url) { // url could be relative or scheme relative or absolute var host = document.location.host; // host + port var protocol = document.location.protocol; var sr_origin = '//' + host; var origin = protocol + sr_origin; // Allow absolute or scheme relative URLs to same origin return (url == origin || url.slice(0, origin.length + 1) == origin + '/') || (url == sr_origin || url.slice(0, sr_origin.length + 1) == sr_origin + '/') || // or any other URL that isn't scheme relative or absolute i.e relative. !(/^(\/\/|http:|https:).*/.test(url)); } function safeMethod(method) { return (/^(GET|HEAD|OPTIONS|TRACE)/.test(method));
}

if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
    xhr.setRequestHeader("X-CSRFToken", getCookie('csrftoken'));
}

});

6、修改settings.py

STATIC_ROOT = os.path.join(BASE_DIR, '/static')

STATICFILES_DIRS = [os.path.join(BASE_DIR,'static'),]
7、
python manage.py makemigrations
python manage.py migrate
python runserver 0.0.0.0:9999 &

你可能感兴趣的:(python django todolist 增删改查)