Проблемы с получением изображения профиля при входе пользователя через Google и Yahoo в Django - PullRequest
0 голосов
/ 13 мая 2019

В настоящее время я создаю похожий на yelp проект с использованием Django, и у меня возникли небольшие проблемы, когда пользователь решает войти в систему, используя oauth.

Вот мой код:

login.html

  <body style="text-align: center;">
    <div class="jumbotron text-center social-btn">
      <h1 style="color: #212529;">Login</h1>
      <br>
      <form method="post">
        {% csrf_token %}
        {{form.as_p}}
        <center>
        <button type="submit" class="btn btn-primary" style="text-indent: -30px; outline:0; text-align: center; background-color:#ffbf24; border:none; width: 200px;">Login<i class="pe-7s-angle-right"></i></button>
        <br>
        <br>
        <p><a href="{% url 'password_reset' %}">Forgot Password?</a></p>
        <center>
        <div class="or-seperator"><i><b style="color: #212529;">or</b></i></div>
          <center>
              <a style="width:250px; background-color: #212529; border:none; outline:0;" href="{% url 'social:begin' 'facebook' %}" class="btn btn-primary btn-block"><i class="fa fa-facebook"></i> Sign in with <b>Facebook</b></a>
              <a style="width:250px; background-color: #212529; border: none; outline:0;" href="{% url 'social:begin' 'yahoo' %}" class="btn btn-info btn-block"><i class="fa fa-yahoo"></i> Sign in with <b>Yahoo</b></a>
        <a style="width:250px; background-color: #212529; border: none; outline:0;" href="{% url 'social:begin' 'google-oauth2' %}" class="btn btn-danger btn-block"><i class="fa fa-google"></i> Sign in with <b>Google</b></a>
      </center>
          </div>
      </form>

<!-- <a href="{% url 'social:begin' 'instagram' %}">Login with Instagram</a> -->
      <!-- <a class="fa fa-google" href="{% url 'social:begin' 'google-oauth2' %}"></a> -->
  </div>
  </body>

urls.py

from django.conf.urls import url, include
from django.contrib import admin
from main_app import views
from django.conf import settings
from django.conf.urls.static import static
from django.contrib.auth import views as auth_views


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^$',views.index,name='index'),
    url(r'^(?P<pk>\d+)/detail/$',views.detail,name='detail'),
    url(r'^listing',views.listing,name='listing'),
    url(r'^main_app/',include('main_app.urls')),
    url(r'^password_reset/$', auth_views.password_reset, name='password_reset'),
    url(r'^password_reset/done/$', auth_views.password_reset_done, name='password_reset_done'),
    url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',auth_views.password_reset_confirm, name='password_reset_confirm'),
    url(r'^reset/done/$', auth_views.password_reset_complete, name='password_reset_complete'),
    url(r'^account_activation_sent/$', views.account_activation_sent, name='account_activation_sent'),
    url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',views.activate, name='activate'),
    url(r'^oauth/', include('social_django.urls', namespace='social')),
    url(r'^search/',views.search,name='search_view'),
    url('', include('django.contrib.auth.urls', namespace='auth')),
    url(r'^update/',views.update_profile,name='update'),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

models.py

class Profile(models.Model):
    email_confirmed = models.BooleanField(default=False)
    user = models.OneToOneField(User, on_delete=models.CASCADE,related_name='profile')
    image = models.ImageField(blank=True,upload_to='main_app/',default='main_app/default.png')

sign_up.html

<body style="text-align: center;">
    <div class="jumbotron">
      <h1>Join Us - It's Free!</h1>
      <br>
      <form method="post" enctype="multipart/form-data" onsubmit="return checkform(this);">
        {% csrf_token %}
        {{form.as_p}}
        <br>
        <center>
        {{profile_form.as_p}}
        <br>
      </center>

        <center>
        <div class="g-recaptcha" data-sitekey="6Le9FI0UAAAAACnWd2iixxfkMTCoHtYteIBsTq0B"></div>
      </center>
      <br>

Так что проблема в том, что когда я регистрируюсь на своей странице, используя свою страницу регистрации, мне успешно дают изображение профиля по умолчанию. Но когда я захожу через google / yahoo, мне дают пустой шаблон без картинки. Я понял, что проблема в том, что я не создал модель профиля для пользователя, который вошел в систему с oauth. Но кто-нибудь знает, как это исправить? Я действительно ценю любую помощь. Извините, если это неясно, я попытался спросить в лучшем виде. Спасибо вам всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...