2014-12-14 2 views
3

현재 사용자가 가정에서 설정할 수있는 하드웨어 장치와 상호 작용할 수있는 웹 사이트에서 작업하고 있습니다. 나는 현재 django-allauth를 사용하여 사용자 등록을하고 있으며 원하는대로 작동합니다. 내 다음 단계는 사용자가 자신의 하드웨어 장치를 자신의 계정에 연결할 수있게하는 것입니다. 하나의 계정에만 연결할 수있는 문자로 구성된 일종의 고유 키 (예 : Sr3D- $ 3tr-SQ2Q-CB24)를 사용하여 구현하고 싶습니다. 나는 이것이 User 모델 (등록 용)의 일부가 아니라, (사용자 모델에 링크 된) Profile 모델에서 나중에 연결할 수있는 어떤 것보다는 싶다.Django 사용자 계정에 하드웨어 장치 등록을 구현하는 방법

나는 django 패키지 또는 비슷한 기능을 구현하는 예제를 광범위하게 검색했지만 운이 없었습니다. 나는이 기능이 꽤 표준적인 기능이라고 생각합니다. 예를 들어 구매와 함께 제공되는 핵심 문구를 사용하여 온라인 기능에 액세스하기 위해 구매 한 게임을 등록해야하는 경우입니다.

누군가가 장고를 사용하여 구현되는 방법에 대한 몇 가지 예제 또는 패키지를 알려줄 수 있습니까?

[편집] 이후 BingsF의 첫 번째 대답은 내가 더 정확한 기능을 수행해야한다고 생각한 후입니다. 기본적으로 데이터베이스에 등록 할 사용자의 사용자 이름과 함께 합법적 인 키를 추가 할 수있는 테이블을 갖고 싶습니다. 사용자가 키를 등록 할 때까지는 처음에는 'Null'입니다. 그런 다음 사용자가 등록 할 때 합법적 인 키를 입력했는지 그리고 이전에 등록되지 않았는지 확인하는 것이 필요합니다.

사용자는 여러 장치를 등록 할 수 있어야합니다.

+0

사용자 당 몇 개의 키가 있습니까? – sax

+0

내가 목표로하는 구현을 통해 사용자는 원하는만큼 많은 장치를 등록 할 수 있습니다 (구매 한 장치). 따라서 기술적으로 무제한입니다. – matben243

답변

2

내 접근 방식은 아마 사용자 모델을 참조하는 외래 키로 새 모델을 만드는 것입니다.

이 (당신의 models.py에서) 같은 것을 보일 것이다 :

class Device(models.Model): 
    username = models.ForeignKey(User) 
    hardware_key = models.CharField(max_length=32, primary_key=True) 

그런 다음, 사용자가 새 하드웨어 키를 업로드 웹 페이지에 당신이 할 것 :

from models import Device, User 

try: 
    device = Device.objects.get(hardware_key=<key>) 
except ObjectDoesNotExist: 
    # deal with case where user tries to register non-existent key 
else: 
    try: 
     device.username = <user> 
     device.save() 
    except IntegrityError: 
     # deal with case where key is already registered to another user 

을 모델 생성/사용에 대한 자세한 내용은 here을 참조하십시오.

+0

나는 이것을 처리 할 패키지가 없다면이 접근법을 취해야 할 것이라고 생각했다. 두 점 : 1. 데이터베이스를 등록한 사용자의 사용자 이름과 함께 합법적 인 키를 추가 할 수있는 테이블을 갖고 싶습니다 (당연히 'Null'입니다.). 그런 다음 사용자가 등록 할 때 합법적 인 키를 입력했는지 그리고 이전에 등록되지 않았는지 확인하는 것이 필요합니다. 이 기능을 처리하기 위해 일종의 '장치'모델을 만들어야합니까? 2. 사용자가 등록한 각 키에 대해 여러 프로필을 만들어야하는 것은 나쁘다고 생각합니다. – matben243

+0

1. 테이블을 그대로 사용하면 처음에는 Null로 사용자를 선택하는 것이 좋습니다. 이전에 키가 등록되지 않았는지 확인하려면 해당 키의 행에 Null이나 다른 사용자가 포함되어 있는지 확인하십시오. 키 당 1 사용자를 시행하려면 hardware_key의 매개 변수로 primary_key = True를 설정하십시오 (위 변경). 2. 사실, 아마도 테이블은 "장치"라고 불러야하며 사용자 계정과 연결된 다른 항목에 대한 "프로필"테이블을 가져야합니다. 테이블에 두 개의 열만 있으면 사용자와 하드웨어 키 사이에 제대로 설계된 일대 다 관계가 만들어집니다. – BingsF