diff --git a/db.sqlite3 b/db.sqlite3 index eefe23c..ee4153b 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/edconline/__pycache__/settings.cpython-36.pyc b/edconline/__pycache__/settings.cpython-36.pyc index 681bdad..a0c5bda 100644 Binary files a/edconline/__pycache__/settings.cpython-36.pyc and b/edconline/__pycache__/settings.cpython-36.pyc differ diff --git a/edconline/settings.py b/edconline/settings.py index 1858807..b8488f0 100644 --- a/edconline/settings.py +++ b/edconline/settings.py @@ -119,7 +119,7 @@ LANGUAGE_CODE = 'zh-hans' -TIME_ZONE = 'UTC' +TIME_ZONE = 'Asia/Shanghai' USE_I18N = True diff --git a/requirements.txt b/requirements.txt index 815e40c..94c24b8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -7,5 +7,6 @@ django-import-export==1.0.0 django-reversion==2.0.13 django-six==1.0.4 django-tinymce4-lite==1.7.0 +Pillow==5.0.0 pyenchant==2.0.0 xadmin==2.0.1 diff --git a/userpage/.views.py.swp b/userpage/.views.py.swp new file mode 100644 index 0000000..baf9dea Binary files /dev/null and b/userpage/.views.py.swp differ diff --git a/userpage/__pycache__/admin.cpython-36.pyc b/userpage/__pycache__/admin.cpython-36.pyc index 25f7d53..708c75f 100644 Binary files a/userpage/__pycache__/admin.cpython-36.pyc and b/userpage/__pycache__/admin.cpython-36.pyc differ diff --git a/userpage/__pycache__/models.cpython-36.pyc b/userpage/__pycache__/models.cpython-36.pyc index 9efa415..289d0e0 100644 Binary files a/userpage/__pycache__/models.cpython-36.pyc and b/userpage/__pycache__/models.cpython-36.pyc differ diff --git a/userpage/__pycache__/urls.cpython-36.pyc b/userpage/__pycache__/urls.cpython-36.pyc index b416511..1dcea9e 100644 Binary files a/userpage/__pycache__/urls.cpython-36.pyc and b/userpage/__pycache__/urls.cpython-36.pyc differ diff --git a/userpage/__pycache__/views.cpython-36.pyc b/userpage/__pycache__/views.cpython-36.pyc index 614354a..f8b1850 100644 Binary files a/userpage/__pycache__/views.cpython-36.pyc and b/userpage/__pycache__/views.cpython-36.pyc differ diff --git a/userpage/admin.py b/userpage/admin.py index 8c38f3f..2a6354c 100644 --- a/userpage/admin.py +++ b/userpage/admin.py @@ -1,3 +1,10 @@ from django.contrib import admin +from .models import * # Register your models here. +class ProfileAdmin(admin.ModelAdmin): + list_display = ('user','location','avatar') +admin.site.register(Profile,ProfileAdmin) + + + diff --git a/userpage/migrations/0001_initial.py b/userpage/migrations/0001_initial.py new file mode 100644 index 0000000..4758a18 --- /dev/null +++ b/userpage/migrations/0001_initial.py @@ -0,0 +1,26 @@ +# Generated by Django 2.0.2 on 2018-02-24 09:02 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Profile', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('location', models.CharField(blank=True, max_length=30)), + ('avatar', models.ImageField(upload_to='avatar/')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/userpage/migrations/0002_auto_20180224_1712.py b/userpage/migrations/0002_auto_20180224_1712.py new file mode 100644 index 0000000..486b994 --- /dev/null +++ b/userpage/migrations/0002_auto_20180224_1712.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-02-24 09:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('userpage', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='avatar', + field=models.ImageField(blank=True, null=True, upload_to='avatar/'), + ), + ] diff --git a/userpage/migrations/__pycache__/0001_initial.cpython-36.pyc b/userpage/migrations/__pycache__/0001_initial.cpython-36.pyc new file mode 100644 index 0000000..52bd9bd Binary files /dev/null and b/userpage/migrations/__pycache__/0001_initial.cpython-36.pyc differ diff --git a/userpage/migrations/__pycache__/0002_auto_20180224_1712.cpython-36.pyc b/userpage/migrations/__pycache__/0002_auto_20180224_1712.cpython-36.pyc new file mode 100644 index 0000000..75f04fa Binary files /dev/null and b/userpage/migrations/__pycache__/0002_auto_20180224_1712.cpython-36.pyc differ diff --git a/userpage/models.py b/userpage/models.py index 71a8362..2af263d 100644 --- a/userpage/models.py +++ b/userpage/models.py @@ -1,3 +1,34 @@ from django.db import models +from django.contrib.auth.models import User +from django.forms import ModelForm,Textarea +from django.db.models.signals import post_save +from django.dispatch import receiver # Create your models here. + +class Profile(models.Model): + user = models.OneToOneField(User, on_delete=models.CASCADE) + #bio = models.TextField(max_length=500, blank=True) + location = models.CharField(max_length=30, blank=True) + #birth_date = models.DateField(null=True, blank=True) + avatar = models.ImageField(upload_to='avatar/', blank=True, null=True) + +@receiver(post_save, sender=User) +def create_user_profile(sender, instance, created, **kwargs): + if created: + Profile.objects.create(user=instance) + +@receiver(post_save, sender=User) +def save_user_profile(sender, instance, **kwargs): + instance.profile.save() + +class UserForm(ModelForm): + class Meta: + model = User + fields = ('username', 'first_name', 'last_name', 'email') + +class ProfileForm(ModelForm): + class Meta: + model = Profile + fields = ('location', 'avatar') + diff --git a/userpage/templates/userpage/profile.html b/userpage/templates/userpage/profile.html new file mode 100644 index 0000000..9f2a0ae --- /dev/null +++ b/userpage/templates/userpage/profile.html @@ -0,0 +1,16 @@ + + +{% if messages %} + +{% endif %} + +
+ {% csrf_token %} + {{ user_form.as_p }} + {{ profile_form.as_p }} + +
diff --git a/userpage/urls.py b/userpage/urls.py index 37bfa4a..260a34a 100644 --- a/userpage/urls.py +++ b/userpage/urls.py @@ -4,4 +4,5 @@ urlpatterns = [ path('/', views.homepage, name='homepage'), + path('update/', views.update_profile, name='update_profile'), ] diff --git a/userpage/views.py b/userpage/views.py index e621997..317906b 100644 --- a/userpage/views.py +++ b/userpage/views.py @@ -1,10 +1,37 @@ from django.shortcuts import render from django.http import HttpResponse,HttpResponseRedirect from django.template import RequestContext,Template,Context,loader,defaultfilters -from django.shortcuts import render_to_response +from django.shortcuts import render_to_response,redirect +from django.contrib.auth.decorators import login_required +from django.db import transaction +from .models import * +from django.contrib import messages # Create your views here. def homepage(request, user_id): return HttpResponse("You're looking at user %s." % user_id) + +@login_required +@transaction.atomic +def update_profile(request): + if request.method == 'POST': + user_form = UserForm(request.POST, instance=request.user) + profile_form = ProfileForm(request.POST, instance=request.user.profile) + if user_form.is_valid() and profile_form.is_valid(): + user_form.save() + profile_form.save() + messages.success(request, '用户资料更新成功!') + return redirect('.') + #return redirect('settings:profile') + else: + messages.error(request, 'Please correct the error below.') + #messages.error(request, _('Please correct the error below.')) + else: + user_form = UserForm(instance=request.user) + profile_form = ProfileForm(instance=request.user.profile) + return render(request, 'userpage/profile.html', { + 'user_form': user_form, + 'profile_form': profile_form + })