Имя пользователя превращается в ссылку на профиль пользователя Django - PullRequest
0 голосов
/ 26 января 2020

**** добавлен профиль просмотра пользователей в разделе url.py плюс мои пользователи view.py ***

Эй, ребята, я пытался спросить это несколько раз, но не думаю, что я был достаточно тщателен теперь я пробовал так много разных способов, за последние несколько дней было интересно, сможет ли кто-нибудь указать мне правильное направление. Я хочу, чтобы имена пользователей, используемые в post.post, превращались в ссылки для этого профиля пользователя. сейчас это вывод, который я получаю.

ссылка на то, как выглядит мой post.post

. Как вы видите, я получаю имя пользователя в сообщении, но оно не отображается как ссылка на профиль этого пользователя. он просто показывает в виде обычного текста, что я хотел бы, чтобы @devil была ссылкой на профиль пользователя ... в конце, хотя система обнаруживает, что @devil является пользователем в базе данных, она просто не показывает его как ссылка в моем шаблоне внешнего интерфейса

Это мой views.py, который я использую, чтобы сервер нашел любого пользователя в post.post

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):
        form = HomeForm(request.POST)
        users = User.objects.all()
        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) #THIS PRINTS THE USERNAME IN THE TERMINAL SO THAT I KNOW IT'S PARSING THE POST FOR USERS MENTIONED IN THE POST WHEN SUBMITTED 

            text = form.cleaned_data['post']
            form = HomeForm()
            return redirect('home')


        context = {'form': form, 'text': text, 'users':users, 'username':username}
        return render(request, self.template_name, context)

Это шаблон внешнего интерфейса I Я использую, чтобы показать информацию, как показано выше для post.post. Я не уверен, как я go сказал шаблону, что любое имя пользователя, начинающееся с @, должно быть ссылкой на профиль пользователя, так как он получает информацию post.post из базы данных.

  {% for post in posts %}
         {{ post.post}}
  {% endfor %}

Это мой models.py

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

class Status1(models.Model):
    post = models.CharField(max_length=333)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    date = models.DateTimeField(auto_now=True)
    blockchain = models.TextField()

, а это мой urls.py


urlpatterns = [
    url(r'^$', HomeView.as_view(), name='home'),
    #path('', HomeView, name='home'),
    path('register/', user_views.register, name='register'),
    path('profile/', user_views.profile, name='profile'),
    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'),
]

Это мой views.py для пользователей

def register(request):
    if request.method == 'POST':
        form = UserRegisterForm(request.POST)
        if form.is_valid():
            form.save()
            username = form.cleaned_data.get('username')
            messages.success(request, f'Welcome {username}!') 
            return redirect('login')
    else:
        form = UserRegisterForm()
    return render(request, 'users/register.html', {'form': form})

def profile(request):
    return render(request, 'users/profile.html')

Я бился головой об этом, я не могу понять это, большое спасибо за всех, кто помогает

...