我可以上传一张个人资料图片并将其放入数据库。我的views.py中有一个“print(profile.profile_picture)”,当我保存时,它将正确打印控制台中的当前配置文件图片。由于某种原因,个人资料图片将不会显示,但我的个人资料.html中的“{%if profile.profile_picture%}”甚至没有拾取任何内容。
[
]
意见。PY=
@login_required
def profile(request):
profile, created = Profile.objects.get_or_create(user=request.user)
print(profile.profile_picture)
if request.method == 'POST':
form = ProfileForm(request.POST, request.FILES, instance=profile)
if form.is_valid():
form.instance.user = request.user
form.save()
return redirect('base:profile') # Redirect to the home page after form submission
else:
form = ProfileForm(instance=profile)
return render(request, 'profile.html', {'form': form})
轮廓。HTML=
<div class="ProfilePage">
<form method="POST" enctype="multipart/form-data" class="profile-form">
{% csrf_token %}
<div class="form-group">
<label for="id_username">Username:</label>
<input type="text" id="id_username" value="{{ request.user.username }}" readonly>
</div>
<div class="form-group">
<label for="id_bio">Bio:</label>
<textarea id="id_bio" name="bio" rows="4" cols="50" required>{{ form.bio.value }} </textarea>
</div>
<div class="form-group">
<label for="id_profile_picture">Profile Picture:</label>
<input type="file" id="id_profile_picture" name="profile_picture" accept="image/*">
</div>
{% if profile.profile_picture %}
<div class="form-group">
<label>Profile Picture Preview:</label><br>
<img src="{{ profile.profile_picture.url }}" alt="Profile Picture" style="max-width: 500px;">
</div>
{% endif %}
<button type="submit" class="btn-submit">Save</button>
</form>
</div>
形式。PY=
from django import forms
from .models import Profile
class ProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['bio', 'profile_picture']
url。PY=
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
from base import views # Import views from the base app
urlpatterns = [
path('admin/', admin.site.urls),
path("", include(("base.urls", "base"), namespace="base")), # Include
app-level URLs with a namespace
path('profile/settings/', views.profile_settings, name='profile_settings'),
path('profile/<str:username>/', views.public_profile, name='public_profile'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
模型。PY=
from django.db import models
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model
import uuid
from datetime import datetime
User = get_user_model()
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(blank=True)
profile_picture = models.ImageField(upload_to='profile_pics',
blank=True)
class Post(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4)
user = models.CharField(max_length=100)
image = models.ImageField(upload_to='post_images')
caption = models.TextField()
created_at = models.DateTimeField(default=datetime.now)
no_of_likes = models.IntegerField(default=0)
def __str__(self):
return self.user
我可以提供更多信息,我有点困惑为什么这不起作用。