├── .idea ├── .name ├── DjangoWebDemo.iml ├── codeStyleSettings.xml ├── encodings.xml ├── misc.xml ├── modules.xml ├── vcs.xml └── workspace.xml ├── DjangoWebDemo ├── __init__.py ├── __init__.pyc ├── settings.py ├── settings.pyc ├── urls.py ├── urls.pyc ├── wsgi.py └── wsgi.pyc ├── README.md ├── StaffManage ├── Requests │ ├── BaseRequestHandler.py │ ├── BaseRequestHandler.pyc │ ├── __init__.py │ ├── __init__.pyc │ ├── user_info_request_handler.py │ └── user_info_request_handler.pyc ├── __init__.py ├── __init__.pyc ├── admin.py ├── admin.pyc ├── forms.py ├── forms.pyc ├── models.py ├── models.pyc ├── tests.py ├── views.py └── views.pyc ├── db.sqlite3 ├── manage.py ├── requirements.txt ├── static └── js │ └── index.js └── templates └── StaffManage ├── base.html ├── dialog.html ├── forms.html ├── index.html └── result.html /.idea/.name: -------------------------------------------------------------------------------- 1 | DjangoWebDemo -------------------------------------------------------------------------------- /.idea/DjangoWebDemo.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 25 | 26 | -------------------------------------------------------------------------------- /.idea/codeStyleSettings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 13 | -------------------------------------------------------------------------------- /.idea/encodings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 15 | 16 | 17 | 19 | 20 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 149 | 150 | 151 | 170 | 171 | 172 | 173 | true 174 | 175 | 176 | 177 | 178 | 179 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 215 | 216 | 217 | 218 | 221 | 222 | 225 | 226 | 227 | 228 | 231 | 232 | 235 | 236 | 239 | 240 | 243 | 244 | 245 | 246 | 249 | 250 | 253 | 254 | 257 | 258 | 261 | 262 | 263 | 264 | 267 | 268 | 271 | 272 | 275 | 276 | 277 | 278 | 281 | 282 | 285 | 286 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 331 | 332 | 333 | 334 | 335 | 348 | 349 | 362 | 363 | 385 | 386 | 403 | 404 | 405 | 406 | 407 | 408 | true 409 | 410 | 411 | 412 | 413 | 432 | 433 | 452 | 453 | 474 | 475 | 497 | 498 | 522 | 523 | 546 | 547 | 548 | 549 | 550 | 551 | 552 | 553 | 554 | 555 | 556 | 557 | 1446799503609 558 | 561 | 562 | 563 | 564 | 565 | 566 | 567 | 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | 577 | 578 | 579 | 580 | 581 | 582 | 583 | 584 | 585 | 586 | 587 | 588 | 589 | 590 | 591 | 592 | 593 | 594 | 595 | 596 | 597 | 598 | 601 | 604 | 605 | 606 | 608 | 609 | 610 | 611 | 612 | file://$PROJECT_DIR$/StaffManage/Requests/user_info_request_handler.py 613 | 55 614 | 616 | 617 | file://$PROJECT_DIR$/StaffManage/views.py 618 | 66 619 | 621 | 622 | file://$PROJECT_DIR$/StaffManage/views.py 623 | 30 624 | 626 | 627 | file://$PROJECT_DIR$/static/js/index.js 628 | 14 629 | 631 | 632 | file://$PROJECT_DIR$/static/js/index.js 633 | 4 634 | 636 | 637 | file://$PROJECT_DIR$/static/js/index.js 638 | 147 639 | 641 | 642 | 644 | 645 | 646 | 647 | 648 | 649 | 650 | 651 | 652 | 653 | 654 | 655 | 656 | 657 | 658 | 659 | 660 | 661 | 662 | 663 | 664 | 665 | 666 | 667 | 668 | 669 | 670 | 671 | 672 | 673 | 674 | 675 | 676 | 677 | 678 | 679 | 680 | 681 | 682 | 683 | 684 | 685 | 686 | 687 | 688 | 689 | 690 | 691 | 692 | 693 | 694 | 695 | 696 | 697 | 698 | 699 | 700 | 701 | 702 | 703 | 704 | 705 | 706 | 707 | 708 | 709 | 710 | 711 | 712 | 713 | 714 | 715 | 716 | 717 | 718 | 719 | 720 | 721 | 722 | 723 | 724 | 725 | 726 | 727 | 728 | 729 | 730 | 731 | 732 | 733 | 734 | 735 | 736 | 737 | 738 | 739 | 740 | 741 | 742 | 743 | 744 | 745 | 746 | 747 | 748 | 749 | 750 | 751 | 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | 761 | 762 | 763 | 764 | 765 | 766 | 767 | 768 | 769 | 770 | 771 | 772 | 773 | 774 | 775 | 776 | 777 | 778 | 779 | 780 | 781 | 782 | 783 | 784 | 785 | 786 | 787 | 788 | 789 | 790 | 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | 800 | 801 | 802 | 803 | 804 | 805 | 806 | 807 | 808 | 809 | 810 | 811 | 812 | 813 | 814 | 815 | 816 | 817 | 818 | 819 | 820 | 821 | 822 | 823 | 824 | 825 | 826 | 827 | 828 | 829 | 830 | 831 | 832 | 833 | 834 | 835 | 836 | 837 | 838 | 839 | 840 | 841 | 842 | 843 | 844 | 845 | 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | 855 | 856 | 857 | 858 | 859 | 860 | 861 | 862 | 863 | 864 | 865 | 866 | 867 | 868 | 869 | 870 | 871 | 872 | 873 | 874 | 875 | 876 | 877 | 878 | 879 | 880 | 881 | 882 | 883 | 884 | 885 | 886 | 887 | 888 | 889 | 890 | 891 | 892 | 893 | 894 | 895 | 896 | 897 | 898 | 899 | 900 | 901 | 902 | 903 | 904 | 905 | 906 | 907 | 908 | 909 | 910 | 911 | 912 | 913 | 914 | 915 | 916 | 917 | 918 | 919 | 920 | 921 | 922 | 923 | 924 | 925 | 926 | 927 | 928 | 929 | 930 | 931 | 932 | 933 | 934 | 935 | 936 | 937 | 938 | 939 | 940 | 941 | 942 | 943 | 944 | 945 | 946 | 947 | 948 | 949 | 950 | 951 | 952 | 953 | 954 | 955 | 956 | 957 | 958 | 959 | 960 | 961 | 962 | 963 | 964 | 965 | 966 | 967 | 968 | 969 | 970 | 971 | 972 | 973 | 974 | 975 | 976 | 977 | 978 | 979 | 980 | 981 | 982 | 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | 995 | 996 | 997 | 998 | 999 | 1000 | 1001 | 1002 | 1003 | 1004 | 1005 | 1006 | 1007 | 1008 | 1009 | 1010 | 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | 1017 | 1018 | 1019 | 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | 1029 | 1030 | 1031 | 1032 | 1033 | 1034 | 1035 | 1036 | 1037 | 1038 | 1039 | 1040 | 1041 | 1042 | 1043 | 1044 | 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | 1051 | 1052 | 1053 | 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | 1060 | 1061 | 1062 | 1063 | 1064 | 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | 1071 | 1072 | 1073 | 1074 | 1075 | 1076 | 1077 | -------------------------------------------------------------------------------- /DjangoWebDemo/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/DjangoWebDemo/__init__.py -------------------------------------------------------------------------------- /DjangoWebDemo/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/DjangoWebDemo/__init__.pyc -------------------------------------------------------------------------------- /DjangoWebDemo/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for DjangoWebDemo project. 3 | 4 | Generated by 'django-admin startproject' using Django 1.8.5. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.8/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/1.8/ref/settings/ 11 | """ 12 | 13 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 14 | import os 15 | 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = '^263@u_^03ga5g4-#&!wd7d@c+u@tddzluh0a^t0$7@_gr+z&8' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = ( 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'StaffManage', 41 | ) 42 | 43 | MIDDLEWARE_CLASSES = ( 44 | 'django.contrib.sessions.middleware.SessionMiddleware', 45 | 'django.middleware.common.CommonMiddleware', 46 | 'django.middleware.csrf.CsrfViewMiddleware', 47 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 48 | 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 49 | 'django.contrib.messages.middleware.MessageMiddleware', 50 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 51 | 'django.middleware.security.SecurityMiddleware', 52 | ) 53 | 54 | ROOT_URLCONF = 'DjangoWebDemo.urls' 55 | 56 | TEMPLATES = [ 57 | { 58 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 59 | 'DIRS': [os.path.join(BASE_DIR, 'templates')] 60 | , 61 | 'APP_DIRS': True, 62 | 'OPTIONS': { 63 | 'context_processors': [ 64 | 'django.template.context_processors.debug', 65 | 'django.template.context_processors.request', 66 | 'django.contrib.auth.context_processors.auth', 67 | 'django.contrib.messages.context_processors.messages', 68 | ], 69 | }, 70 | }, 71 | ] 72 | 73 | WSGI_APPLICATION = 'DjangoWebDemo.wsgi.application' 74 | 75 | 76 | # Database 77 | # https://docs.djangoproject.com/en/1.8/ref/settings/#databases 78 | 79 | DATABASES = { 80 | 'default': { 81 | 'ENGINE': 'django.db.backends.sqlite3', 82 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 83 | }, 84 | 'django': { 85 | 'ENGINE': 'django.db.backends.sqlite3', 86 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 87 | } 88 | # 'django': { 89 | # #'ENGINE': 'django.db.backends.sqlite3', 90 | # #'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 91 | # 'ENGINE': 'django.db.backends.mysql', 92 | # 'NAME': 'django', 93 | # 'USER': 'artogrid', 94 | # 'PASSWORD': 'artogrid', 95 | # 'HOST': '192.168.1.102', 96 | # 'PORT': '3306', 97 | # } 98 | } 99 | 100 | 101 | # Internationalization 102 | # https://docs.djangoproject.com/en/1.8/topics/i18n/ 103 | 104 | LANGUAGE_CODE = 'en-us' 105 | 106 | TIME_ZONE = 'UTC' 107 | 108 | USE_I18N = True 109 | 110 | USE_L10N = True 111 | 112 | USE_TZ = True 113 | 114 | 115 | # Static files (CSS, JavaScript, Images) 116 | # https://docs.djangoproject.com/en/1.8/howto/static-files/ 117 | 118 | STATIC_URL = '/static/' 119 | STATICFILES_DIRS = ( 120 | os.path.join(BASE_DIR, "static"), 121 | ) -------------------------------------------------------------------------------- /DjangoWebDemo/settings.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/DjangoWebDemo/settings.pyc -------------------------------------------------------------------------------- /DjangoWebDemo/urls.py: -------------------------------------------------------------------------------- 1 | """DjangoWebDemo URL Configuration 2 | 3 | The `urlpatterns` list routes URLs to views. For more information please see: 4 | https://docs.djangoproject.com/en/1.8/topics/http/urls/ 5 | Examples: 6 | Function views 7 | 1. Add an import: from my_app import views 8 | 2. Add a URL to urlpatterns: url(r'^$', views.home, name='home') 9 | Class-based views 10 | 1. Add an import: from other_app.views import Home 11 | 2. Add a URL to urlpatterns: url(r'^$', Home.as_view(), name='home') 12 | Including another URLconf 13 | 1. Add an import: from blog import urls as blog_urls 14 | 2. Add a URL to urlpatterns: url(r'^blog/', include(blog_urls)) 15 | """ 16 | from django.conf.urls import include, url 17 | from django.contrib import admin 18 | 19 | urlpatterns = [ 20 | url(r'^admin/', include(admin.site.urls)), 21 | url(r'^$', 'StaffManage.views.index', name='StaffManage'), 22 | url(r'^add_user_info_list$','StaffManage.views.add_user_info_list', name='add_user_info_list'), 23 | url(r'^delete_user_info_list$','StaffManage.views.delete_user_info_list', name='delete_user_info_list'), 24 | url(r'^update_user_info_list$','StaffManage.views.update_user_info_list', name='update_user_info_list'), 25 | url(r'^get_user_info_list$','StaffManage.views.get_user_info_list', name='get_user_info_list'), 26 | ] 27 | -------------------------------------------------------------------------------- /DjangoWebDemo/urls.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/DjangoWebDemo/urls.pyc -------------------------------------------------------------------------------- /DjangoWebDemo/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for DjangoWebDemo project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoWebDemo.settings") 15 | 16 | application = get_wsgi_application() 17 | -------------------------------------------------------------------------------- /DjangoWebDemo/wsgi.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/DjangoWebDemo/wsgi.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | python3 2 | 安装: pip install -r requirements.txt 3 | 4 | 运行: python manage.py runserver 5 | 6 | 访问: localhost:8000 7 | -------------------------------------------------------------------------------- /StaffManage/Requests/BaseRequestHandler.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import traceback 4 | import json 5 | import math 6 | import hashlib 7 | import warnings 8 | from django.http import HttpResponseForbidden 9 | from django.http import HttpResponseBadRequest 10 | from django.http import HttpResponseNotFound 11 | from django.http import HttpResponseServerError 12 | from django.http import HttpResponse, Http404 13 | from DjangoWebDemo.settings import DATABASES,DEBUG 14 | 15 | __author__ = 'yudan.chen' 16 | 17 | 18 | class BaseRequestHandler: 19 | """ 20 | The base class to deal with common operations on updating models 21 | """ 22 | def __init__(self, params, request): 23 | self.params = params 24 | self.request = request 25 | self.django = DATABASES[u'django'][u'NAME'] 26 | self.test = DATABASES[u'default'][u'NAME'] 27 | self.failed_description = u'服务器暂时未能响应,请稍候再试' 28 | 29 | def prepare_update_params(self): 30 | self.t_user_id = self.params.get(u'userId') 31 | self.t_password_md5 = self.params.get(u'password_md5') 32 | 33 | 34 | def prepare_get_params(self): 35 | self.t_user_id = self.params.get(u'userId') 36 | self.t_password_md5 = self.params.get(u'password_md5') 37 | 38 | def pre_verify(self): 39 | pass 40 | 41 | def get_data(self): 42 | return [] 43 | 44 | def load_data(self, model_data_list): 45 | return [] 46 | 47 | def operate_failed_response(self, failed_reason): 48 | response_data = {u'req_path': self.request.META.get(u'PATH_INFO'), 49 | u'req_result': False, 50 | u'failed_reason': failed_reason} 51 | if DEBUG: 52 | print response_data 53 | return HttpResponse(json.dumps(response_data), content_type=u'application/json') 54 | 55 | def operate_response(self, process_data): 56 | warnings.filterwarnings("error") 57 | response_data = {u'req_path': self.request.META.get(u'PATH_INFO'), 58 | u'req_result': True} 59 | try: 60 | if process_data is not None: 61 | process_data() 62 | except Exception, e: 63 | response_data[u'req_result'] = False 64 | response_data[u'failed_description'] = self.failed_description 65 | traceback.print_exc() 66 | 67 | if DEBUG: 68 | print response_data 69 | # return response_data 70 | return HttpResponse(json.dumps(response_data), content_type=u'application/json') 71 | 72 | def get_response(self, process_data=None, load_data=None): 73 | print "************************* ",self.request.META.get(u'PATH_INFO') 74 | response_data = {u'req_path': self.request.META.get(u'PATH_INFO'), 75 | u'req_result': False} 76 | try: 77 | model_data_list = self.get_data() if process_data is None else process_data() 78 | total_records = len(model_data_list) 79 | if total_records >= 0: 80 | response_data[u'total_records'] = str(total_records) 81 | response_data[u'data'] = self.load_data(model_data_list) if load_data is None else load_data(model_data_list) 82 | response_data[u'req_result'] = True 83 | except Exception, e: 84 | traceback.print_exc() 85 | 86 | if DEBUG: 87 | print response_data 88 | return response_data 89 | # return HttpResponse(json.dumps(response_data), content_type=u'application/json') 90 | -------------------------------------------------------------------------------- /StaffManage/Requests/BaseRequestHandler.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/Requests/BaseRequestHandler.pyc -------------------------------------------------------------------------------- /StaffManage/Requests/__init__.py: -------------------------------------------------------------------------------- 1 | __author__ = '9' 2 | -------------------------------------------------------------------------------- /StaffManage/Requests/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/Requests/__init__.pyc -------------------------------------------------------------------------------- /StaffManage/Requests/user_info_request_handler.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: utf-8 -*- 3 | 4 | from StaffManage.Requests.BaseRequestHandler import BaseRequestHandler 5 | from DjangoWebDemo.settings import DATABASES 6 | from StaffManage.models import UserInfo,make_uuid_without_hypen 7 | 8 | from django.core.cache import cache 9 | 10 | import traceback 11 | import json 12 | 13 | __author__ = '9' 14 | 15 | class UserInfoRequestHandler(BaseRequestHandler): 16 | def __init__(self, params, request): 17 | BaseRequestHandler.__init__(self, params, request) 18 | 19 | def prepare_update_params(self): 20 | self.USER_INFO_LIST = self.params.get(u'USER_INFO_LIST') 21 | 22 | def prepare_add_params(self): 23 | self.ID = make_uuid_without_hypen(); 24 | self.NAME = self.params.get(u'NAME') 25 | self.SEX = self.params.get(u'SEX') 26 | self.TYPE = self.params.get(u'TYPE') 27 | 28 | def prepare_delete_params(self): 29 | self.ID = self.params.get(u'ID') 30 | 31 | def get_user_info_list(self): 32 | user_info_list = UserInfo.objects.using(DATABASES[u'django'][u'NAME']) 33 | return user_info_list 34 | 35 | def get_data(self): 36 | return self.get_user_info_list() 37 | 38 | def load_data(self, model_data_list): 39 | user_info_list = model_data_list 40 | data = [] 41 | for user_info in user_info_list: 42 | each_data = { 43 | u'ID': user_info.id, 44 | u'NAME': user_info.name, 45 | u'SEX': user_info.sex, 46 | u'TYPE': user_info.type, 47 | } 48 | data.append(each_data) 49 | return data 50 | 51 | def update_data(self): 52 | info_list = self.USER_INFO_LIST.split(u',') 53 | for info in info_list: 54 | print(info) 55 | user_id, name, sex, type = info.split(u'&') 56 | user_info = UserInfo.objects.using(DATABASES[u'django'][u'NAME']).get(id=user_id) 57 | user_info.name = name 58 | user_info.sex = sex 59 | user_info.type = type 60 | user_info.save(using=DATABASES[u'django'][u'NAME'], force_update=True) 61 | 62 | def add_data(self): 63 | user_info = UserInfo() 64 | user_info.id = self.ID 65 | user_info.name = self.NAME 66 | user_info.sex = self.SEX 67 | user_info.type = self.TYPE 68 | user_info.save(using=self.django) 69 | 70 | def delete_data(self): 71 | assert(self.ID is not None) 72 | UserInfo.objects.using(self.django).get(id=self.ID).delete() 73 | 74 | def get_update_response(self): 75 | return self.operate_response(process_data=self.update_data) 76 | 77 | def get_add_response(self): 78 | return self.operate_response(process_data=self.add_data) 79 | 80 | def get_delete_response(self): 81 | return self.operate_response(process_data=self.delete_data) 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /StaffManage/Requests/user_info_request_handler.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/Requests/user_info_request_handler.pyc -------------------------------------------------------------------------------- /StaffManage/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/__init__.py -------------------------------------------------------------------------------- /StaffManage/__init__.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/__init__.pyc -------------------------------------------------------------------------------- /StaffManage/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /StaffManage/admin.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/admin.pyc -------------------------------------------------------------------------------- /StaffManage/forms.py: -------------------------------------------------------------------------------- 1 | __author__ = '9' 2 | 3 | from django import forms 4 | from crispy_forms.helper import FormHelper, Layout 5 | from crispy_forms.layout import Row, Div, Field, Submit, Layout, HTML, Hidden, Button 6 | from crispy_forms.bootstrap import TabHolder, Tab, FormActions, InlineRadios 7 | 8 | class StaffManageForm(forms.Form): 9 | sm_name = forms.CharField( 10 | label='name:', 11 | required=False, 12 | ) 13 | 14 | sm_sex = forms.CharField( 15 | label='sex:', 16 | required=False, 17 | ) 18 | sm_type = forms.CharField( 19 | label='type', 20 | required=False, 21 | ) 22 | 23 | 24 | def __init__(self, *args, **kwargs): 25 | super(StaffManageForm, self).__init__(*args, **kwargs) 26 | 27 | self.helper = FormHelper() 28 | self.helper.form_class = 'form-horizontal' 29 | self.helper.label_class = 'col-md-4' 30 | self.helper.field_class = 'col-md-8' 31 | self.helper.layout = Layout( 32 | Row( 33 | Div('sm_name', css_class='col-md-4'), 34 | Div('sm_sex', css_class='col-md-4'), 35 | Div('sm_type', css_class='col-md-4'), 36 | ), 37 | 38 | HTML('''
'''), 39 | 40 | Row( 41 | FormActions( 42 | Submit('save', 'Query'), 43 | Button('add', 'Add', css_id='addItem'), 44 | # hidden=True, 45 | ) 46 | ) 47 | ) 48 | 49 | class AddItemForm(forms.Form): 50 | sm_name = forms.CharField( 51 | label='name:', 52 | required=True, 53 | ) 54 | 55 | sm_sex = forms.CharField( 56 | label='sex:', 57 | required=True, 58 | ) 59 | sm_type = forms.CharField( 60 | label='type', 61 | required=True, 62 | ) 63 | 64 | 65 | def __init__(self, *args, **kwargs): 66 | super(AddItemForm, self).__init__(*args, **kwargs) 67 | 68 | self.helper = FormHelper() 69 | self.helper.form_class = 'form-verical' 70 | self.helper.label_class = 'col-md-4' 71 | self.helper.field_class = 'col-md-8' 72 | self.helper.layout = Layout( 73 | Div('sm_name', css_class='col-md-4'), 74 | Div('sm_sex', css_class='col-md-4'), 75 | Div('sm_type', css_class='col-md-4'), 76 | 77 | FormActions( 78 | Button('cancel', 'Cancel'), 79 | Button('ok', 'Ok', css_id='add_item11'), 80 | # hidden=True, 81 | ) 82 | ) -------------------------------------------------------------------------------- /StaffManage/forms.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/forms.pyc -------------------------------------------------------------------------------- /StaffManage/models.py: -------------------------------------------------------------------------------- 1 | # This is an auto-generated Django model module. 2 | # You'll have to do the following manually to clean this up: 3 | # * Rearrange models' order 4 | # * Make sure each model has one field with primary_key=True 5 | # * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table 6 | # Feel free to rename the models, but don't rename db_table values or field names. 7 | # 8 | # Also note: You'll have to insert the output of 'django-admin.py sqlcustom [app_label]' 9 | # into your database. 10 | from __future__ import unicode_literals 11 | 12 | import uuid 13 | from django.db import models 14 | 15 | def make_uuid_without_hypen(): 16 | new_uuid = uuid.uuid4() 17 | return str(new_uuid).replace(u'-', u'') 18 | 19 | class UserInfo(models.Model): 20 | id = models.CharField(primary_key=True, max_length=255) 21 | name = models.CharField(max_length=255, blank=True) 22 | sex = models.CharField(max_length=10, blank=True) 23 | type = models.CharField(max_length=255, blank=True) 24 | 25 | def __str__(self): 26 | return self.name 27 | 28 | # class Meta: 29 | # managed = False 30 | # db_table = 'user_info' 31 | -------------------------------------------------------------------------------- /StaffManage/models.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/models.pyc -------------------------------------------------------------------------------- /StaffManage/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /StaffManage/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | import datetime 3 | from StaffManage import models 4 | import traceback 5 | import warnings 6 | from django.http import Http404 7 | from django.views.decorators.csrf import csrf_exempt 8 | from django.forms.models import model_to_dict 9 | import json 10 | from django.http import HttpResponse 11 | from StaffManage.models import UserInfo,make_uuid_without_hypen 12 | from DjangoWebDemo.settings import DATABASES 13 | 14 | def index(request): 15 | try: 16 | result = models.UserInfo.objects.all() 17 | except: 18 | traceback.print_exc() 19 | raise Http404 20 | 21 | return render(request, 'StaffManage/index.html', { 22 | 'result': json.dumps(obj_to_dict(result)), 23 | }) 24 | 25 | @csrf_exempt 26 | def get_user_info_list(request): 27 | try: 28 | user_name = request.POST.get('NAME') 29 | user_sex = request.POST.get('SEX') 30 | user_type = request.POST.get('TYPE') 31 | result = models.UserInfo.objects.filter(name__contains=user_name, sex__contains=user_sex, type__contains=user_type) 32 | 33 | return HttpResponse(json.dumps(obj_to_dict(result)), content_type='application/json') 34 | # return render(request, 'StaffManage/index.html', { 35 | # 'result': json.dumps(obj_to_dict(result)), 36 | # }) 37 | except: 38 | traceback.print_exc() 39 | raise Http404 40 | 41 | @csrf_exempt 42 | def add_user_info_list(request): 43 | try: 44 | user_name = request.POST.get('NAME') 45 | user_sex = request.POST.get('SEX') 46 | user_type = request.POST.get('TYPE') 47 | 48 | new_user= models.UserInfo(id=make_uuid_without_hypen(),name=user_name, sex=user_sex, type=user_type) 49 | new_user.save() 50 | print(json.dumps(model_to_dict(new_user))) 51 | return HttpResponse(json.dumps(model_to_dict(new_user)), content_type='application/json') 52 | 53 | except: 54 | traceback.print_exc() 55 | raise Http404 56 | 57 | def obj_to_dict(obj_list): 58 | result = [] 59 | for obj in obj_list: 60 | result.append(model_to_dict(obj)) 61 | return result 62 | 63 | 64 | @csrf_exempt 65 | def delete_user_info_list(request): 66 | try: 67 | user_id = request.POST.get('ID') 68 | delete_user = UserInfo.objects.get(id=user_id) 69 | delete_user.delete() 70 | except: 71 | traceback.print_exc() 72 | raise Http404 73 | 74 | return HttpResponse(json.dumps({'ID': user_id}), content_type='application/json') 75 | 76 | @csrf_exempt 77 | def update_user_info_list(request): 78 | try: 79 | info = request.POST.get(u'USER_INFO_LIST') 80 | user_id, name, sex, type = info.split(u',') 81 | user_info = UserInfo.objects.get(id=user_id) 82 | user_info.name = name 83 | user_info.sex = sex 84 | user_info.type = type 85 | user_info.save() 86 | except: 87 | traceback.print_exc() 88 | raise Http404 89 | 90 | return HttpResponse(json.dumps({'ID': user_id}), content_type='application/json') -------------------------------------------------------------------------------- /StaffManage/views.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/StaffManage/views.pyc -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cc3213252/DjangoWebDemo/c079ba1f9c986c12f869f6c289865f7236ee29b5/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "DjangoWebDemo.settings") 7 | 8 | from django.core.management import execute_from_command_line 9 | 10 | execute_from_command_line(sys.argv) 11 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | django==1.9 -------------------------------------------------------------------------------- /static/js/index.js: -------------------------------------------------------------------------------- 1 | $(function(){ 2 | $('#sms_query').click(smsQuery); 3 | 4 | $('#sms_add').click(function(){ 5 | $('#myModal').modal("toggle"); 6 | $('#myModal').on("shown.bs.modal", function(){ 7 | $('#sm_name').val(""); 8 | $('#sm_sex').val(""); 9 | $('#sm_type').val(""); 10 | $('#myModalLabel').text('Add One Item'); 11 | }); 12 | }); 13 | 14 | $('#add_ok').click(function(){ 15 | $('#sm_name').parent().removeClass("has-error"); 16 | if ($('#sm_name').val() == ""){ 17 | $('#sm_name').parent().addClass("has-error"); 18 | } 19 | 20 | $('#sm_sex').parent().removeClass("has-error"); 21 | if ($('#sm_sex').val() == ""){ 22 | $('#sm_sex').parent().addClass("has-error"); 23 | } 24 | 25 | $('#sm_type').parent().removeClass("has-error"); 26 | if ($('#sm_type').val() == ""){ 27 | $('#sm_type').parent().addClass("has-error"); 28 | } 29 | 30 | var id = $('#myModalLabel').attr("name"); 31 | var name = $('#sm_name').val(); 32 | var sex = $('#sm_sex').val(); 33 | var type = $('#sm_type').val(); 34 | var title = $('#myModalLabel').text(); 35 | 36 | if (title == "Add One Item"){ 37 | $.post("/add_user_info_list", {"NAME": name, "SEX": sex, "TYPE":type}, function(result){ 38 | $('#table').append(createTableLine(result)); 39 | }); 40 | }else{ 41 | var user_info_list = id + "," + name + "," + sex + "," + type; 42 | 43 | $.post("/update_user_info_list", {"USER_INFO_LIST": user_info_list}, function(result){ 44 | $('#myModal').hide(); 45 | var line = findTableLine(id); 46 | if (line != null) { 47 | line.children[1].innerHTML = name; 48 | line.children[2].innerHTML = sex; 49 | line.children[3].innerHTML = type; 50 | } 51 | }); 52 | } 53 | }); 54 | $('#sm_forms').submit(function(e){ 55 | e.preventDefault(); 56 | }) 57 | }) 58 | 59 | function findTableLine(id){ 60 | var list = $('#table').children(); 61 | for (var index = 0; index < list.length; index++ ) { 62 | var line = list[index]; 63 | 64 | if (line.children[0].innerHTML == id) { 65 | return line; 66 | } 67 | } 68 | } 69 | 70 | function createTable(result){ 71 | $.each(result, function(index, row){ 72 | $('#table').append(createTableLine(row)); 73 | }); 74 | } 75 | 76 | function createTableLine(row){ 77 | var trNode = document.createElement("tr"); 78 | var tdnodeId = document.createElement("td"); 79 | tdnodeId.innerHTML = row.id; 80 | tdnodeId.setAttribute("class", "id"); 81 | 82 | var tdnodeName = document.createElement("td"); 83 | tdnodeName.innerHTML = row.name; 84 | tdnodeName.setAttribute("class", "name"); 85 | 86 | var tdnodeSex = document.createElement("td"); 87 | tdnodeSex.innerHTML = row.sex; 88 | tdnodeSex.setAttribute("class", "sex"); 89 | 90 | var tdnodeType = document.createElement("td"); 91 | tdnodeType.innerHTML = row.type; 92 | tdnodeType.setAttribute("class", "type"); 93 | 94 | var tdnodeBtn = document.createElement("td"); 95 | var aNode1 = document.createElement("a"); 96 | aNode1.setAttribute("class", "navbar-btn"); 97 | var spanNode = document.createElement("span"); 98 | spanNode.setAttribute("class", "glyphicon glyphicon-pencil"); 99 | aNode1.appendChild(spanNode); 100 | aNode1.onclick = editStaff; 101 | aNode1.appendChild(spanNode); 102 | tdnodeBtn.appendChild(aNode1); 103 | 104 | 105 | var tdnodeBtn2 = document.createElement("td"); 106 | var spanNode2 = document.createElement("span"); 107 | var aNode2 = document.createElement("a"); 108 | aNode2.setAttribute("class", "navbar-btn"); 109 | spanNode2.setAttribute("class", "glyphicon glyphicon-trash"); 110 | aNode2.onclick = deleteFun; 111 | aNode2.appendChild(spanNode2); 112 | tdnodeBtn2.appendChild(aNode2); 113 | 114 | trNode.appendChild(tdnodeId); 115 | trNode.appendChild(tdnodeName); 116 | trNode.appendChild(tdnodeSex); 117 | trNode.appendChild(tdnodeType); 118 | trNode.appendChild(tdnodeBtn); 119 | trNode.appendChild(tdnodeBtn2); 120 | return trNode; 121 | } 122 | 123 | function editStaff(){ 124 | $('#myModal').modal('toggle') 125 | var id = $(this).parent().parent().children(".id").text(); 126 | var name = $(this).parent().parent().children(".name").text(); 127 | var sex = $(this).parent().parent().children(".sex").text(); 128 | var type = $(this).parent().parent().children(".type").text(); 129 | $('#myModal').on("shown.bs.modal", function(){ 130 | $('#myModalLabel').attr("name", id); 131 | $('#sm_name').val(name); 132 | $('#sm_sex').val(sex); 133 | $('#sm_type').val(type); 134 | $('#myModalLabel').text('Update One Item'); 135 | }); 136 | } 137 | 138 | function deleteFun() { 139 | var id = $(this).parent().parent().children(".id").text(); 140 | var node = $(this).parent().parent(); 141 | 142 | $.post("/delete_user_info_list", {"ID": id}, function (result) { 143 | node.remove(); 144 | }); 145 | } 146 | 147 | function smsQuery(){ 148 | var name = $('#sms_name').val(); 149 | var sex = $('#sms_sex').val(); 150 | var type = $('#sms_type').val(); 151 | 152 | $.post("/get_user_info_list", {"NAME": name, "SEX":sex, "TYPE":type}, function(result){ 153 | $.each($('#table').children(), function(index, line){ 154 | line.remove(); 155 | 156 | }); 157 | createTable(result); 158 | }); 159 | } -------------------------------------------------------------------------------- /templates/StaffManage/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {% block title %}(no title){% endblock %} 6 | 7 | {# #} 8 | 9 | 10 | 11 | 12 | {% block content %}(no content){% endblock %} 13 | {##} 14 | {##} 15 | {##} 16 | {% block javascript %}{% endblock %} 17 | 18 | -------------------------------------------------------------------------------- /templates/StaffManage/dialog.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/StaffManage/forms.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | 5 |
6 | 7 |
8 | 9 | 10 |
11 | 12 | 13 |
14 | 15 | 16 |
17 | 18 |
19 | 20 |
21 | 22 |
23 | 24 |
25 |
-------------------------------------------------------------------------------- /templates/StaffManage/index.html: -------------------------------------------------------------------------------- 1 | {% extends 'StaffManage/base.html' %} 2 | 3 | {% block title %}Staff Manage System{% endblock %} 4 | 5 | {% block content %} 6 |
7 |

Staff Manage System

8 | 9 | 12 | 13 |
14 |
15 | {% include 'StaffManage/forms.html' %} 16 | {% include 'StaffManage/result.html' %} 17 |
18 |
19 |
20 | 21 | {% include 'StaffManage/dialog.html' %} 22 | {% endblock %} 23 | 24 | {% block javascript %} 25 | 26 | 31 | 32 | {% endblock %} 33 | 34 | -------------------------------------------------------------------------------- /templates/StaffManage/result.html: -------------------------------------------------------------------------------- 1 |
2 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | {% comment %} {% for row in result %} 23 | 24 | 25 | 26 | 27 | 28 | 35 | 36 | 37 | {% endfor %}{% endcomment %} 38 | 39 |
IDNAMESEXTYPEREVISEDEL
{{ row.ID }}{{ row.NAME }}{{ row.SEX }}{{ row.TYPE }}
40 |
41 |
--------------------------------------------------------------------------------