Привет, ребята, я новичок в Django и пытаюсь заставить работать определенную вещь, так что извините, если я сделал предыдущие посты, но я делаю большие успехи.
Что я пытаюсь do - это когда пользователь отправляет сообщение в базу данных, которую он сканирует, чтобы увидеть, упоминается ли в нем пользователь, так что когда он отображает как html, он превращает упомянутого в сообщении пользователя в URL-ссылку для этого профиля пользователя вместе с Оригинальный текст. Таким образом, пост такой же, только если упоминается пользователь, это имя пользователя в виде ссылки на его или ее профиль в исходном тексте. Это то, что рендерит прямо сейчас, когда отправлено сообщение.
сообщение, отправленное пользователем
, как вы можете видеть, @devil - это пользователь, и его имя пользователя со ссылкой появляется над ним, но не в данных сообщения. Как бы я go сделал это так, чтобы публикация проверялась на наличие пользователя в базе данных, если он был перед ней в виде символа "@", и возвращала имя пользователя в виде ссылки на его профиль.
Это код views.py для отправки сообщения, как вы видите, я пытаюсь использовать метод .split, но он просто печатает имя пользователя в терминале работающего сервера.
def get(self, request):
form = HomeForm()
posts = Status1.objects.filter(user=request.user).order_by('-id')
users = User.objects.all()
args = {'form':form, 'posts':posts, 'users':users}
return render(request, self.template_name, args)
def post(self, request, pk=None):
form = HomeForm(request.POST)
users = User.objects.all()
if pk:
user = User.objects.get(pk=pk)
else:
user = request.user
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.save()
for username in post.post.split():
if username.startswith("@"):
user = User.objects.get(username=username)
username = user
print(username)
text = form.cleaned_data['post']
form = HomeForm()
return redirect('home')
Это мои модели. py
class Status1(models.Model):
post = models.CharField(max_length=333)
user = models.ForeignKey(User, on_delete=models.CASCADE)
date = models.DateTimeField(auto_now=True)
Это мои views.py для пользователей
def profile(request, username, pk=None):
if pk:
user = User.objects.get(pk=pk)
else:
user = request.user
u = User.objects.get(username=username)
users = User.objects.all()
context = {'users' : users, 'user' : user}
return render(request, 'users/profile.html', context)
Это мои пользователи urls.py
urlpatterns = [
url(r'^$', HomeView.as_view(), name='home'),
path('register/', user_views.register, name='register'),
path('<username>', user_views.profile, name='profile'),
path('<pk>', user_views.profile, name='profile_with_pk'),
path('admin/', admin.site.urls),
path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
]